每个html的元素都是一个Box Model,由外而内为外边距(Margin)、边框(Border)、内边距(Padding)、内容盒子(Content Box)所组成。
与外层元素的间距。
margin四个边写在一起的写法:
各别写
可使用auto、%(百分比)、长度单位(px、em、rem...)
外边距合并指的是指当两个元素垂直外边距相遇时就会合并成一个外边距,数字相同合并外,如果两个数字不同会取最大的,让我们来看以下常见的范例
橘色区块margin-bottom:30px; 绿色区块margin-top:20px;
<div class="box">
<div class="item orange">
Lorem ipsum dolor sit amet, harum malorum ex mei
</div>
<div class="item green">
Quo ea doming scripserit ullamcorper, audire percipit ex sit
</div>
</div>
.orange{
background-color:#ff9800;
margin-bottom: 30px;
}
.green{
background-color: #8bc34a;
margin-top: 20px;
}
可能你会以为这样的设定是margin-bottom:20px + margin-top:10px = 30px的距离
但实际上是取得margin最大值或是相等的值
元素合并是因为外层框没有设置框线或是内距才会发生合并
.box{
background-color:#efefef;
margin:50px;
}
.item{
background-color:#ff9800;
margin:10px 0;
}
当你外层.box有设定边框时,margin:10px 0;就会有效
.box{
background-color:#efefef;
margin:50px;
border: 1px solid #666;
}
行内框(inline)、浮动框、绝对位置不会合并
边界内元素与内容距离,写法与margin相同,可各别设定四个边「padding-top」、「padding-right」、「padding-bottom」、「padding-left」,也可以一次套用四个边,顺序为上、右、下、左(顺时针)设定。
范例:设定box宽度为300px,内距20px
<div class="box">
Lorem ipsum dolor sit amet, harum malorum ex mei. Quo ea doming scripserit ullamcorper, audire percipit ex sit
</div>
.box{
width: 300px;
background-color: #efefef;
padding: 20px;
}
但实际宽度会是340px(300px + 左内边距 20px + 右内边距 20px)
这样就超过我一开始想要的宽度300px了,所以我就要把宽度扣掉padding的左右内距才会符合300px
.box{
width: 260px; // 300 - 20(左内距) - 20(右内距)
background-color: #efefef;
padding: 20px;
}
但是每次只要有设定内距,就要把原本的宽度扣掉,这样子太麻烦了。所以可以使用box-sizing
属性,设定border-box,就不会受padding影响,还是能保留他原本的宽度。但你会发现使用内边距的话,内容空间会减少。
.box{
width: 300px;
background-color: #efefef;
padding: 20px;
box-sizing:border-box;
}
box-sizing
- content-box:预设值,实际宽高=所设定的数值+border+padding
- border-box:实际宽高=所设定的数值(已包含border和padding)
border-width四个边写在一起的写法:
各别写
可使用auto、%(百分比)、长度单位(px、em、rem...)、关键字(thin(细框线), medium(预设), thick(粗框线))
设定四个边的宽度都一样
.box{
border: 2px solid blue;
}
设定四个边宽度
.box{
border: 2px solid blue;
border-width:3px 6px 10px 5px;
width: 300px;
}
border-style四个边写在一起的写法:
各别写
border-color四个边写在一起的写法:
各别写
设定四个边的颜色
.box{
border: 2px solid blue;
border-color: red green blue orange;
}
border-color单独使用是不起作用的,必须使用border-style来设置边框样式
顺序为border-width border-style border-color
.border-solid{
border: 4px solid #999;
}
border除了做图片、区块...的边宽外,还能制作三角形,以下范例是制作正三角形
.triangle{
height:0px;
width:0px;
border-bottom: 50px solid blue;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
}
如果觉得自己写三角形计算宽度很麻烦,还有三角形产生器 ,只要设定好方向、大小、颜色,就能够让轻松的产出三角形
box-shadow:h-shadow v-shadow blur color inset
.box{
padding: 15px;
border: 1px solid #ccc;
width: 300px;
box-shadow: 0 0 8px #ccc;
}
.box img{
padding: 5px;
border: 1px solid #ccc;
width: 300px;
box-shadow: 3px 3px 1px #ccc;
}
.box{
padding: 15px;
width: 300px;
box-shadow: inset 0 0 15px #ccc;
}
outline是紧邻border外的边线
紧邻border外的边线,属性与border相同
.box{
padding: 15px;
width: 300px;
border: 3px solid #666;
outline: 3px solid #ccc
}
我自己在设定CSS时,会在全域设定为box-sizing:border-box,这样子就不用担心宽度或高度会因为我设定了padding、框线...而受影响,或是还要再扣掉宽度才会符合我设定的尺寸。
相信你对Box Model有一定的了解了,对於区块、图片...,都可以得心应手的美化了。
<<: TailwindCSS 从零开始 - 价目表卡片实战 - 基础卡片样式
>>: Day21-部署篇(三)Laravel 专案部署与 MySQL、Nginx 设定
学习进度 Android Studio (以下功能皆为自学) ChipGroup、Chip使用 Sw...
安全设计原则 NIST SP 800-160V1引入了三类安全设计原则: 1.安全架构与设计 2....
接续昨日的DialogFlow对话流设计後, 现在你已经拥有了一个能执行的语音应用程序! 接下来,...
Media Query 我觉得已经讲到快烂掉了,搭配 Grid 说实在话也没有很不好做的地方。不过,...
从当初进公司没有前辈的带领以及各种专案即刻救援的摧残、体验当菜鸟业师以及超新鲜面试官的经验後,现在部...