Help us shape the 2021 DevExtreme Roadmap. Take our 5 minute survey.
Dismiss
Your search did not match any results.
Box

Box

Documentation

The Box widget allows you to arrange various elements within it. Separate and adaptive, the Box widget acts as a building block for the layout. In this demo, you can see how the widget is used to layout different elements on a page.

Copy to CodeSandBox
Apply
Reset
<template> <div> <DxBox :height="75" direction="row" width="100%" > <DxItem :ratio="1" > <template #default> <div class="rect demo-dark">ratio = 1</div> </template> </DxItem> <DxItem :ratio="2" > <template #default> <div class="rect demo-light">ratio = 2</div> </template> </DxItem> <DxItem :ratio="1" > <template #default> <div class="rect demo-dark">ratio = 1</div> </template> </DxItem> </DxBox> <br> <DxBox :height="75" direction="row" width="100%" > <DxItem :ratio="0" :base-size="150" > <template #default> <div class="rect demo-dark">150px</div> </template> </DxItem> <DxItem :ratio="1"> <DxBox :height="75" class="demo-light" direction="row" width="100%" align="center" cross-align="center" > <DxItem :ratio="0" :base-size="50" > <template #default> <div> <div class="small"/> </div> </template> </DxItem> <DxItem :ratio="0" :base-size="50" > <template #default> <div> <div class="small"/> </div> </template> </DxItem> <DxItem :ratio="0" :base-size="50" > <template #default> <div> <div class="small"/> </div> </template> </DxItem> </DxBox> </DxItem> <DxItem :ratio="0" base-size="10%" > <template #default> <div class="rect demo-dark">10%</div> </template> </DxItem> </DxBox> <br> <DxBox :height="250" direction="col" width="100%" > <DxItem :ratio="1" > <template #default> <div class="rect demo-dark header">Header</div> </template> </DxItem> <DxItem :ratio="2" :base-size="0" > <DxBox :height="125" direction="row" width="100%" > <DxItem :ratio="1"> <template #default> <div class="rect demo-dark">Left Bar</div> </template> </DxItem> <DxItem :ratio="1"> <template #default> <div class="rect demo-light">Content</div> </template> </DxItem> <DxItem :ratio="1"> <template #default> <div class="rect demo-dark">Right Bar</div> </template> </DxItem> </DxBox> </DxItem> <DxItem :ratio="1"> <template #default> <div class="rect demo-dark footer">Footer</div> </template> </DxItem> </DxBox> </div> </template> <script> import { DxBox, DxItem } from 'devextreme-vue/box'; export default { components: { DxBox, DxItem } }; </script> <style> .rect { text-align: center; font-size: 30px; padding-top: 10px; height: 100%; } .demo-light { background: rgba(245, 229, 166, 0.5) } .demo-dark { background: rgba(148, 215, 199, 0.5); } .demo-dark.header { background: rgba(243, 158, 108, 0.5); } .demo-dark.footer { background: rgba(123, 155, 207, 0.5); } .small { height: 50px; border: 1px solid lightgray; } </style>
import { createApp } from 'vue'; import App from './App.vue'; createApp(App).mount('#app');
<!DOCTYPE html> <html> <head> <title>DevExtreme Demo</title> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/20.2.4/css/dx.common.css" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/20.2.4/css/dx.light.css" /> <script src="https://unpkg.com/core-js@2.4.1/client/shim.min.js"></script> <script src="https://unpkg.com/systemjs@0.21.3/dist/system.js"></script> <script type="text/javascript" src="config.js"></script> <script type="text/javascript"> System.import('./index.js'); </script> </head> <body class="dx-viewport"> <div class="demo-container"> <div id="app"> </div> </div> </body> </html>
System.config({ transpiler: 'plugin-babel', meta: { '*.vue': { loader: 'vue-loader' }, }, paths: { 'npm:': 'https://unpkg.com/' }, map: { 'vue': 'npm:vue@3.0.0/dist/vue.esm-browser.js', 'vue-loader': 'npm:dx-systemjs-vue-browser@1.0.15/index.js', 'mitt': 'npm:mitt/dist/mitt.umd.js', 'rrule': 'npm:rrule@2.6.6/dist/es5/rrule.js', 'luxon': 'npm:luxon@1.25.0/build/global/luxon.min.js', 'es6-object-assign': 'npm:es6-object-assign@1.1.0', 'devextreme': 'npm:devextreme@20.2.4', 'devextreme-vue': 'npm:devextreme-vue@20.2.4', 'jszip': 'npm:jszip@3.5.0/dist/jszip.min.js', 'devextreme-quill': 'npm:devextreme-quill@0.9.7/dist/dx-quill.min.js', 'devexpress-diagram': 'npm:devexpress-diagram@2.0.5/dist/dx-diagram.js', 'devexpress-gantt': 'npm:devexpress-gantt@2.0.8/dist/dx-gantt.js', 'preact': 'npm:preact@10.5.7/dist/preact.js', 'preact/hooks': 'npm:preact@10.5.7/hooks/dist/hooks.js', 'plugin-babel': 'npm:systemjs-plugin-babel@0.0.25/plugin-babel.js', 'systemjs-babel-build': 'npm:systemjs-plugin-babel@0.0.25/systemjs-babel-browser.js' }, packages: { 'devextreme-vue': { main: 'index.js' }, 'devextreme': { defaultExtension: 'js' }, 'devextreme/events/utils': { main: 'index' }, 'devextreme/events': { main: 'index' }, 'es6-object-assign': { main: './index.js', defaultExtension: 'js' } }, babelOptions: { sourceMaps: false, stage0: true } });