display: flex;
:将容器设置为Flex布局。flex-direction: row/column;
:设置主轴的方向(水平或垂直)。flex-wrap: nowrap/wrap/wrap-reverse;
:控制子元素是否换行。justify-content: flex-start/flex-end/center/space-between/space-around;
:控制子元素在主轴上的对齐方式。align-items: flex-start/flex-end/center/baseline/stretch;
:控制子元素在交叉轴上的对齐方式。align-content: flex-start/flex-end/center/space-between/space-around/stretch;
:控制多行子元素在交叉轴上的对齐方式。order
: 定义子元素的排列顺序。flex-grow
: 定义子元素的放大比例。flex-shrink
: 定义子元素的缩小比例。flex-basis
: 定义子元素在主轴上的初始大小。flex
: 等同于flex-grow, flex-shrink, flex-basis的缩写。align-self
: 可以覆盖父容器的align-items属性,控制单个子元素的对齐方式。html框架如下,各个div取好名字,方便样式对应和js定位。
<body>
<div id="left">
<div id="left_up">div>
<div id="left_down">div>
div>
<div id="center">div>
<div id="right">
<div id="right_up">div>
<div id="right_down">div>
div>
body>
首先设置一下主元素body
margin
和padding
设为0,因为有默认样式。body{
background: url(./assects/images/background.jpg) center;
margin: 0px;
padding: 0px;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
}
然后就是各个部分“分天下”,如下所示,各自的宽高百分比对应父元素宽高。
#left{
width: 25%;
height: 100%;
background-color: brown;
margin-right: 2%;
}
#left_up{
width: 100%;
height: 40%;
background-color: aqua;
}
#left_down{
width: 100%;
height: 60%;
background-color: bisque;
}
#center {
width: 46%;
height: 100%;
background-color: rgb(255, 205, 251);
}
#right{
width: 25%;
height: 100%;
margin-left: 2%;
background-color: blue;
}
#right_up{
width: 100%;
height: 50%;
background-color: rgb(0, 255, 106);
}
#right_down{
width: 100%;
height: 50%;
background-color: rgb(255, 195, 195);
}
script
链接上对应的js图表绘制。再根据显示效果,调整图表相关字体,调整宽高等等。width: 125%;
这种超出
设置,可以让图表显示更合理(因为实际div会部分覆盖,但是覆盖的是另外图表的空白区域所以没关系)。flex
布局,grid
网格布局也很香⭐️,核心思路也是分块+填充调整。快速上手
display: grid;
样式,将其设置为Grid布局容器。grid-template-columns
属性来定义列的宽度,可以使用像素、百分比等单位,也可以使用fr
表示等分比例。例如,grid-template-columns: 1fr 2fr 1fr;
将容器分为三列,其中第二列的宽度是第一列和第三列的两倍。使用grid-template-rows
属性来定义行的高度,用法与grid-template-columns
类似。grid-column
和grid-row
属性来控制子元素的位置。例如,grid-column: 1 / 3;
将元素放置在第一列到第三列之间的区域。也可以使用grid-area
属性来同时定义grid-row
和grid-column
,例如,grid-area: 2 / 1 / 3 / 3;
将元素放置在第二行第一列到第三列之间的区域。grid-gap
属性来设置网格之间的间隔,可以是像素、百分比等单位。例如,grid-gap: 10px;
将网格之间的间隔设置为10像素。justify-items
用于控制子元素在列中的对齐方式,align-items
用于控制子元素在行中的对齐方式等。HTML:
<div class="grid-container">
<div class="item header">Headerdiv>
<div class="item sidebar">Sidebardiv>
<div class="item content">Contentdiv>
<div class="item footer">Footerdiv>
div>
CSS:
.grid-container {
display: grid;
grid-template-columns: 1fr 2fr 1fr; /* 列宽比例为 1:2:1 */
grid-template-rows: auto 100px 1fr; /* 行高分为自适应、100px、剩余部分 */
grid-gap: 10px;
grid-template-areas:
"header header header"
"sidebar content content"
"footer footer footer"; /* 定义布局区域 */
height: 400px; /* 限制容器高度 */
}
.item {
background-color: #ccc;
padding: 20px;
}
.header { grid-area: header; background-color: lightblue; }
.sidebar { grid-area: sidebar; background-color: lightgreen; }
.content { grid-area: content; background-color: lightyellow; }
.footer { grid-area: footer; background-color: lightsalmon; }