inline行内元素与padding margin 的断舍离

一 我们都知道,对于行内元素可以设置 padding-left padding-right margin-left margin-right,可以将其和与之一行的元素挤开一定的距离,一般我们认为行内元素不能设置margin和padding的top 和 bottom,其实这些是可以的,只是,对于行内元素设置这些属性没有太大的意义,我称之为”残疾的盒模型“
二 那么 什么是”残疾的盒模型“呢?
来看一下demo:

    <style type="text/css">
    .one{
        width: 300px;
        height: 100px;
        border:1px solid red;
        margin-top: 150px;  
    }
    .one a {
        padding: 100px 50px;

        margin-top: 50px;
        line-height: 100px;

        background: pink;
    }
    .two {
        width: 300px;
        height: 100px;
        background: green;
    }

</style>
</head>
<body>
<div class="one">第一个盒子
    <a href="">购物车</a>
</div>
<div class="two">第二个盒子</div>
</body>

设置了padding-top

a 标签的盒模型如下:
a标签的盒模型

通过以上demo可以看出来,其实堆行内元素设置top bottom 的padding和margin 是可以的,只是
第一:设置的margin-top bottom基本上属于被浏览器抛弃置之不理的状态;
第二:设置了padding-top bottom的行内元素,背景渲染的时候依然会渲染上,但是不会挤开其他盒子的内容了。
第三:padding margin - left right 还是可以挤开盒子的 左右距离的。

三 顺便总结下最让人恶心的line-height属性吧 ,看定义:line-height该属性会影响行框的布局。在应用到一个块级元素时,它定义了该元素中基线之间的最小距离而不是最大距离。
line-height 与 font-size 的计算值之差(在 CSS 中成为“行间距”)分为两半,分别加到一个文本行内容的顶部和底部。可以包含这些内容的最小框就是行框。
W3C上明确说了用在块级元素上,但是,如果我用在行内元素上呢?其实效果是一样的
走个demo:

        <style type="text/css">
        .one{
            width: 300px;
            height: 100px;
            border:1px solid red;
            margin-top: 150px;

        }

        .one a {
            padding: 100px 50px;
            margin-left: 50px;
            margin-top: 50px;
            line-height: 60px;
            background: pink;
        }
        .two {
            width: 300px;
            height: 100px;
            background: green;
        }
        .three {
            width: 300px;
            height: 20px;
            background: blue;
        }

    </style>
</head>
<body>
    <div class="one">
        第一个盒子<a href="">购物车</a>
        <div class="three">第三个盒子</div>
    </div>
    <div class="two">第二个盒子</div>
</body>

-height 与 font-size 的计算值之差(在 CSS 中成为“行间距”)分为两半,分别加到一个文本行内容的顶部和底部。

注意这句话,走你。。。。。来看效果,不是让你走的。。。。(大家可以在浏览器里面改下line-height的值看下变化

这里写图片描述

去掉line-height 的效果图

这里写图片描述

实践出真知,针织衫真保暖。咯咯。
结论1 行内元素还是可以设置line-height的,行内元素的padding值可以被背景渲染的。
去掉 a 标签的 padding: 100px 50px;试下效果:

.one a {
            margin-left: 50px;
            margin-top: 50px;
            line-height: 60px;
            background: pink;
        }

这里写图片描述

结论2 行内元素的line-height属性并不能使该元素的背景被渲染出来。

结论3 我想去趟厕所,憋了有一会了,对不起,pangguang ! 你们看不到删除线的文字吧!

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值