css中margin属性值百分比的使用

margin使我们使用得很频繁的一个属性,用来设置一个元素所有外边距的宽度,或者设置各边上外边距的宽度,可以有 1 到 4 个值。例子:margin:10px 5px 15px 20px;
说明:

属性值描述
auto浏览器计算外边距
length规定以具体单位计的外边距值,比如像素、厘米等。默认值是 0px
%规定基于父元素的宽度的百分比的外边距
inherit规定应该从父元素继承外边距

值得注意的是属性值为百分比时的边距是基于父元素的宽度来计算的,有如下两个DIV:
在这里插入图片描述
依照属性描述,得出的上、右、下、左边距都是400x10%=40px,结果也是如此:
在这里插入图片描述
想象中margin-top和margin-bottom应该与包含元素的高度关联,而margin-left和margin-right才应该与包含元素的宽度关联。经查阅,这与页面默认的书写模式writing-mode有关。默认情况下writing-mode的值为 horizontal-tb,即水平书写方式。当把书写模式修改为纵向的时候,margin-top/bottom/left/right的百分比值都将会以包含元素的高度为参照,即200x10% = 20px。
在这里插入图片描述

造成这种现象的原因其实更多的要从css的设计意图上去想,因为css的基础需求是排版,而我们通常所见的横排文字,它的水平宽度一定(实际写页面时,如果没有定义元素宽度或者强制一行显示,文字都会在遇到边界时换行,而不是水平延展),而垂直方向可以无限延展。但在将书写模式修改为纵向的时候,其参照就变成了高度而不再是宽度了。

writing-mode:属性定义了文本在水平或垂直方向上如何排布。
writing-mode: horizontal-tb | vertical-rl | vertical-lr | sideways-rl | sideways-lr

  • horizontal-tb:水平方向自上而下的书写方式。即 left-right-top-bottom
  • vertical-rl:垂直方向自右而左的书写方式。即 top-bottom-right-left
  • vertical-lr:垂直方向内内容从上到下,水平方向从左到右
  • sideways-rl:内容垂直方向从上到下排列
  • sideways-lr:内容垂直方向从下到上排列

演示效果:
在这里插入图片描述
兼容性:
在这里插入图片描述

  • 11
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值