深入理解CSS:padding

  1. padding与元素的尺寸

    对于块级(block)元素

    padding会影响元素的尺寸;但是当width:auto或者box-sizing:border-box;时,padding不会影响元素的尺寸(有例外!),只会压缩内容区域的尺寸,但是如果padding的尺寸过大时,也会影响元素尺寸。

    总结:

    1. padding值暴走,一定会影响元素尺寸
    2. width非auto并且box-sizing非border-box时,padding影响尺寸
    3. width为auto或box-sizing为border-box,同时padding值没有暴走,不影响尺寸

    对于内联(inline)元素

    水平padding影响元素尺寸,垂直padding不影响尺寸,但是水平和垂直padding都会影响元素的背景区域大小,会影响scrollHeight。

    应用:

    实现高度可控的分隔线

    1
    
    2
    
    3
    
    4
    
    5
    
    6
    
    7
    
    8
    
    9
    
    注册<span></span>退出登陆
    
    <style>
    
    span {
    
    padding: 10px 6px 1px; /*设置分割线距离右边的位置以及长短*/
    
    margin-left: 12px; /*设置分隔线距离左边的位置*/
    
    border-left: 2px solid; /*实现分隔线*/
    
    font-size: 0;
    
    }
    
    </style>
    
  2. padding负值与百分比值

    padding不支持任何形式的负值

    对于块级元素

    padding的百分比值与margin类似,均是相对于父元素的宽度计算的。

    应用:

    实现一个正方形:

    1
    
    2
    
    3
    
    div {
    
    padding: 50%;
    
    }
    

    移动端的正方形头图可以使用这种方法,兼容性比较好。

    对于内联元素

    1. 同样相对于宽度计算
    2. 默认的高度宽度细节有差异

      空的内联元素加padding为50%时,高宽也不相等,因为inline元素的垂直padding会让“幽灵空白节点(strut)“显现。设置”font-size:0;”可以解决。

    3. padding会断行

      当标签内用文字时,如果文字换行了,padding也会跟着文字换行。

  3. 标签元素的内置padding

    1. ol/ul列表

      元素很多内置margin/padding值一般都以em为单位,但是ol/ul元素内置padding-left的单位是px不是em,例如在chrome中是40px;所以如果字号很小,间距就会很开,如果字号很大,序号就会爬到容器外面。

      技巧:网页文字一般大小是12-14px,ol/ul的padding设置为22-25px比较对齐。

    2. 表单元素的内置padding
      • 所有浏览器input/textarea输入框内置padding
      • 所有浏览器button按钮内置padding
      • 部分浏览器select下拉内置padding,如firefox IE8+可以设置padding
      • 所有浏览器radio/checkbox单复选框无内置padding
      • button按钮元素的padding最难控制!

        chrome浏览器没问题

        firfox设置padding:0左右仍然有padding,button:-moz-focus-inner { padding: 0}可以解决。

        padding高度的计算各个浏览器不兼容,解决方案:

        <a>标签模拟

        表单需要用内置<button>时,可以用<label>标签解决:

        1
        
        2
        
        <button id="btn"></button> <!--将button标签”可访问性隐藏“-->
        
        <label for="btn">按钮</label>
        
  4. padding与图形绘制

    实现三道杠图形:

    大专栏  深入理解CSS:paddinger">

    1
    
    2
    
    3
    
    4
    
    5
    
    6
    
    7
    
    8
    
    9
    
    10
    
    11
    
    <div class="line-tri"></div>
    
    .line-tri {
    
    width: 150px;
    
    height: 30px;
    
    padding: 15px 0;
    
    border-top: 30px solid; /*第一道杠*/
    
    border-bottom: 30px solid; /*第二道杠*/
    
    background-color: black; /*第三道杠*/
    
    background-clip: content-box; /*CSS属性,让背景只存在于盒子的内容区域*/
    
    }
    

    实现白眼效果:

    1
    
    2
    
    3
    
    4
    
    5
    
    6
    
    7
    
    8
    
    9
    
    10
    
    <div class="eye"></div>
    
    .eye {
    
    width: 150px;
    
    height: 150px;
    
    padding: 10px;
    
    border: 10px solid;
    
    border-radius: 50%;
    
    background-color: black;
    
    background-clip: content-box;
    
    }
    
  5. padding布局实践

    • 1:1布局的头图

      padding:50%;

    • 配合margin实现等高布局
      1
      
      2
      
      3
      
      4
      
      5
      
      6
      
      7
      
      8
      
      9
      
      10
      
      11
      
      12
      
      13
      
      14
      
      15
      
      16
      
      17
      
      .box {
      
      overflow: hidden;
      
      resize: vertical;
      
      }
      
      .child-orange,
      
      .child-green {
      
      margin-bottom: -600px;
      
      padding-bottom: 600px;
      
      }
      
      .child-orange {
      
      float: left;
      
      background: orange;
      
      }
      
      .child-green {
      
      float: left;
      
      background: green;
      
      }
      
    • 两栏自适应布局

      padding在容器上:

      1
      
      2
      
      3
      
      4
      
      5
      
      6
      
      7
      
      8
      
      9
      
      10
      
      11
      
      12
      
      <div class="pbox">
      
      <img src="mm.jpg">
      
      文本内容
      
      </div>
      
      .pbox {
      
      padding-left: 120px;
      
      }
      
      .pbox img {
      
      float: left;
      
      margin-left: -120px;
      
      }
      

      padding在子元素上:

      1
      
      2
      
      3
      
      4
      
      5
      
      6
      
      7
      
      8
      
      9
      
      10
      
      11
      
      <div>
      
      <img src="mm.jpg">
      
      <div class="auto">文本内容</div>
      
      </div>
      
      img {
      
      float: left;
      
      }
      
      .auto {
      
      padding-left: 120px;
      
      }
      

      ?

原文地址:https://www.cnblogs.com/liuzhongrong/p/12257911.html

时间: 2024-10-15 09:26:01

深入理解CSS:padding的相关文章

理解CSS盒子模型

什么是CSS的盒子模式呢?为什么叫它是盒子?先说说我们在网页设计中常听的属性名:内容(content).填充(padding).边框(border).边界(margin), CSS盒子模式都具备这些属性. 这些属性我们可以把它转移到我们日常生活中的盒子(箱子)上来理解,日常生活中所见的盒子也具有这些属性,所以叫它盒子模式.那么内容就是盒子里装的东西:而填充就是怕盒子里装的东西(贵重的)损坏而添加的泡沫或者其它抗震的辅料:边框就是盒子本身了:至于边界则说明盒子摆放的时候的不能全部堆在一起,要留一定

深入理解CSS中的margin

1.css margin可以改变容器的尺寸 元素尺寸 可视尺寸--标准盒子模型中盒子的宽度是不包括margin值的,clientWidth 占据尺寸--包括margin的宽度 outWidth不在标准之中,jquery中有相对应的方法 margin与可视尺寸 1.1使用那个与没有设定width/height的普通block水平元素 2.2只适用于水平方向尺寸 <body style="background-color:#1a2b3c"> <div style=&quo

深入理解CSS盒子模型

前言:前阵子在做一个项目时,在页面布局方面遇到了一点小问题,于是上stackoverflow上求助.ifaou在帮助我解决我问题的同时,还推荐我阅读一篇有关CSS盒子模型的文章<The CSS Box Model>,阅读之后受益匪浅,才知道自己对盒子模型知识还是如此欠缺.恰逢学期末,项目验收后暂时告一段落,有空闲的时间.于是想把这篇文章翻译出来,一方面再给自己一点挑战和锻炼,另一方面也给大家参考,让更多的人受益. 这篇文章适合初级web设计朋友,让你对盒子模型有更近一步的理解.但是在阅读这篇文

CSS padding

CSS padding 是用来控制div table 内间距的,下面我们就来讲一下padding 实例吧. 利用CSS填充,你将能够更改默认的间隙内出现的各种HTML元素(段落,表格等) .但首先,让我们相信我们的理解定义的填充.阿填充的空间之间的一个组成部分的边界和内容内. 请参阅下面的例子中的视觉表现.注:边界已经取得了明显的,对于每个元素,所以您可能更容易看到的效果填充 p {padding: 15px; border: 1px solid black; }  h5{padding: 0p

CSS padding margin border属性详解

图解CSS padding.margin.border属性W3C组织建议把所有网页上的对像都放在一个盒(box)中,设计师可以通过创建定义来控制这个盒的属性,这些对像包括段落.列表.标题.图片以及层.盒模型主要定义四个区域:内容(content).内边距(padding).边框(border)和外边距(margin).对于初学者,经常会搞不清楚margin,background-color,background-image,padding,content,border之间的层次.关系和相互影响.

深入理解css中的margin属性

转载自  http://www.cnblogs.com/zhuzhenwei918/p/6124263.html 深入理解css中的margin属性 之前我一直认为margin属性是一个非常简单的属性,但是最近做项目时遇到了一些问题,才发现margin属性还是有一些"坑"的,下面我会介绍margin的基本知识以及那些"坑".这篇博文主要分为以下几个部分: margin--基础知识 margin--在同级元素(非父子关系)之间应用 margin--在父元素和子元素之间

前段--尝试以新角度深入理解CSS盒模型(1)

CSS样式规则的学习是很繁琐和枯燥的,因为它不像物理.数学或者其他编程语言一样有一些基本概念.有一些基本公理或者规则,其他所有的表现都是概念在这些公里或者规则之下的逻辑游戏,CSS是有一些基本概念,但它没有说给你几条规则然后所有的表现都是在这些规则之下的任意自由组合,你要推测一个样式声明块的在页面中具体是怎样表现的,你几乎靠非常少逻辑推理去推测出来,绝大多数是你知道并记住了这种写法的声名块是具有怎样的表现的.之所以为这样也是因为样式的组合太繁琐组合情况特别多,像同样的概念margin在块级中的表

理解CSS

写在前面的话:对于web开发,html完成网页的structure,css完成网页的presentation,js完成网页的behavior,今天就来说一说css,通过理解一些css的基础概念,能够更好的实现一些我们想要的功能. ====正文开始===== 当通过各个html标签完成网页的结构(structure),接下来就需要使用css完成网页的展示(presentation).展示实现的功能无非就是设置各个html标签的大小.样式,各个html标签在网页中如何摆放等功能,因此可以总结为如下几

转-CSS padding margin border属性详解

原文链接:http://www.cnblogs.com/linjiqin/p/3556497.html 图解CSS padding.margin.border属性W3C组织建议把所有网页上的对像都放在一个盒(box)中,设计师可以通过创建定义来控制这个盒的属性,这些对像包括段落.列表.标题.图片以及层.盒模型主要定义四个区域:内容(content).内边距(padding).边框(border)和外边距(margin).对于初学者,经常会搞不清楚margin,background-color,b