以下代码在线调试工具推荐:菜鸟
圣杯布局和双飞翼布局:为了实现一个两侧宽度固定,中间宽度自适应的三栏布局。
- 两侧宽度固定,中间宽度自适应
- 中间部分在DOM结构上优先,以便先行渲染
- 允许三列中的任意一列成为最高列
- 只需要使用一个额外的
<div>标签
圣杯布局
实现方式:浮动(float)+定位(position)+负外边距(negative margin)+预留左右侧空间+页面最小宽度
<div id="header"></div>
<div id="container">
<div id="center" class="column"></div>
<div id="left" class="column"></div>
<div id="right" class="column"></div>
</div>
<div id="footer"></div>body {
min-width: 550px;
}
div{
height:100px;
}
#container {
padding-left: 200px;
padding-right: 150px;
background:blue
}
#container .column {
float: left;
}
#center {
width: 100%;
background:black
}
#left {
width: 200px;
margin-left: -100%;
position: relative;
right: 200px;
background:red
}
#right {
width: 150px;
margin-right: -150px;
background: green
}
#footer {
clear: both;
}双飞翼布局
实现方式:与圣杯布局相同的思路,设置宽度与浮动,并预留出左右空间。
<div id="container" class="column">
<div id="center"></div>
</div>
<div id="left" class="column"></div>
<div id="right" class="column"></div>body {
min-width: 500px;
}
div{
height: 100px
}
#container {
width: 100%;
}
.column {
float: left;
}
#center {
margin-left: 200px;
margin-right: 150px;
background: green
}
#left {
width: 200px;
margin-left: -100%;
background: red
}
#right {
width: 150px;
margin-left: -150px;
background: blue
}
双飞翼布局没有用到position:relative进行定位
flex
<div id="container">
<div id="center"></div>
<div id="left"></div>
<div id="right"></div>
</div>#container {
display: flex;
}
div{
height:100px
}
#center {
flex: 1;
background: green
}
#left {
flex: 0 0 200px;
order: -1;
background: red
}
#right {
flex: 0 0 150px;
background: blue
}/deep/
vue组件中,在style设置为scoped的时候,里面在写样式对子组件是不生效的,如果想让某些样式对所以子组件都生效,可以使用 /deep/ 深度选择器。
<-- less语法 -->
.wrap{
/deep/ .el-dialog__header {
padding: 0;
position: relative;
//没有必要写多层deep 父类有deep后子类自动也会深度选择 并且这么写在firfox里会失效
}
}/deep/的意思大概为深入的,深远的。我们都知道Scoped CSS规范是Web组件产生不污染其他组件,也不被其他组件污染的CSS规范。这样在打包的时候会生成一个独一无二hash值,这样父组件的样式就不会影响到子组件了,然后你要想修改子组件的样式,一般是提取一个公共文件,在公共文件里面修改样式,但是这样也存在着问题,所以就需要有一个方法或者方式,既不影响到别的地方,又能修改子组件在当前的样式。