我们已经知道,任何web可视元素,即有外观的对象,都拥有边距,但你可能不知道元素还拥有轮廓。先来复习一下边距。
元素有两种边距:外边距和内边距。请观察以下示范的元素Son和Daughter在框内的表现:Son与父框之间有20px的外边距,内边距为10px,而Daughter既没有外边距也没有内边距——
外边距就是margin,是元素边框(border)以外的距离,可以理解为动物世界里领地意识下的社交距离,它是web元素与周边元素是否亲密接触的属性,为0则和周边元素可能亲个嘴——只是可能,恰巧周边某个元素的margin也为0时这事就不好意思啦肯定会发生。
内边距就是padding,是元素边框与里内元素的距离。如果边框是皮、内元素是骨头,那么,内边距就是皮下脂肪,骨感美皮下脂肪少甚至没有,所谓皮包骨,这是padding值太小甚至为0的缘故,丰满美则不然,皮下脂肪厚,即padding值大,皮与骨之间拉开距离,显得微胖、胖并对骨架有保护作用(因而年老之后风采依旧)。
一切都要合适才好:margin与padding之值多少,根据需要设定,一切服务于web的功能需求。
前面我们提到领地意识。margin可以视为元素这些动物的领地意识表现。但只是之一,属生活区域,还有个活动区域,叫轮廓,叫out-line。依然以上一个示范例子演示,不同的是,我们分别给Son和Daughter都加入了轮廓(outline)及其轮廓距离(outline-offset):
Son和Daughter的点状线框就是轮廓边框,从此往里到其边框(border)之间的距离是轮廓距离。再仔细观察Daughter轮廓边框的情况,它不仅侵占了Son的领地,还突破了父框的限制,是不是很霸道呢?呵呵,其实这是因为我们把Daughter的轮廓距离设置得大了一些的缘故,而轮廓(outline)及其轮廓距离(outline-offset)不是实体存在,意思是它不实际占地儿,只是虚张声势而已,换言之,与padding不同,元素的outline不计入自身的width值,与margin不同,元素的outline不会影响它与周边元素的距离。
轮廓的设置(语句与border无异):
outline: 1px solid #ff0000;
outline-offset: 20px;
思考题:只许单独使用一个 div ,如何做出有四条边框线的效果?
二〇二二年一月十日