CSS深入了解之padding

一、padding影响元素尺寸

对于block水平元素

  1. padding值大到一定境界,一定会影响尺寸;
  2. width非auto,padding值会影响尺寸(padding值越大,元素看起来越小);
  3. width:auto或box-sizing:border-box;同时padding值没有特别的大,不影响尺寸

对于inline水平元素

水平padding会影响尺寸,垂直padding不影响尺寸,但是会影响背景颜色(占据空间变大)

使用这一特性,可以实现高度可控的分割线

/*使用inline padding实现     注册 | 退出登录 */

<!--------------HTML代码-------------->

注册<span></span>登录

<!--------------CSS代码-------------->

span{
          padding:16px 6px 1px;
          margin-left:12px;
          border-left:2px solid;
          font-size:0;
}

二、padding的特性

1、padding不支持任何形式的负值
2、padding百分比相对于宽度计算
/* block元素实现移动端屏幕题图占一半 */

<div class="container">
     <div class="example">
           <h2>padding..</h2>
           <h3>margin...</h3>
    </div>
</div>
<!---------------CSS代码--------------->
.container {
  padding:50%; //使图片占据移动端屏幕的一半,不用计算各种移动端设备的宽和高
  background: url(exp.jpg);
  background-size: 100%;
  position:relatvie;
}
.example {
  position:absolute;
  top:0;
  right:0;
  bottom:0;
  left:0;
}//文字充满整个屏幕显示
3、inline水平元素的padding百分比值
    .同样相对于宽度计算
    。默认的高度宽度细节有差异
    。padding会断行
inline就算是空白元素,padding高和宽也不想等
是因为:inline元素的垂直padding会让“幽灵空白节点”显现,也就是规范中的"strut"出现。

三、标签元素内置padding的使用

1、ol/ul列表

i.ol/ul元素内置padding-left,但是单位是px而不是em;

ii.所以如果字号很小/很大,间距就会很开 (平时开发font-size:是12/14,padding-left:22/25px相对合适)

2、所有浏览器input/textarea输入框内置padding

3、所有浏览器botton按钮内置padding

4、所有浏览器radio/checkbox单复选框无内置padding

5、button按钮元素的padding最难控制!

在不同浏览器上使用不同的padding

i.chrome浏览器 padding:0;即可以

ii.FireFox浏览器设置padding:0 左右依然有padding! 可以设置 button:-moz-focus-inner{padding:0;}

iii.IE浏览器下 按钮文字越多,左右padding逐渐变大 button{overflow:visible;}

  • padding与高度计算的不兼容

!!!更好的是利用<label>标签模拟按钮,但是有时需要button提交,所以,利用<button>的可用性并可访问性隐藏

<button id="btn"></button>
<label for="btn">按钮</label>

label{
   display:inline-block;
   line-height:20px;
   padding:1px;
}
#btn{ z-inde:-1;//藏在背景色之下 }
或者#btn{ absolute:-999em;//藏在屏幕之外}

四、padding与布局

1、使用百分比单位构建固定比例布局结构
2、配合margin实现等高布局
3、实现两栏自适应布局

/* padding设置在容器上*/

 /*  padding设置在容器上*/
<div class="pbox">
    <img src="abc.jpg">本例子实现的是,图片宽度固定,然后后面的文字自适应的效果。原理如下:
       容器有个固定的padding-lfet值,此时图文应该在120px处显示,但是,由于图片margin负值浮动(或者绝对定位)到容器左上角,因此,文字.../>
</div>

<!------------------CSS代码---------------->

.pbox{ padding-left:120px;//图文距离容器边缘120px处显示
}
.pbox img{
      float:left;//让文字浮动,所以不占据空间;
      margin-left:-120px;//图片与文字之间的距离
}

/* padding在子元素上 */

 /*  padding在子元素上   */

<div>
   <img src="abc.jpg">
   <div class="auto">本例子实现的是,图片宽度固定,然后后面文字信息自适应的效果。原理如下:两栏元素均有自己的标签,其中文字栏有个固定的padding-left值,此时文字应该在距离容器120像素处显示,但是,由于图片浮动,不在流中,所以文字。。。</div>
</div>

<!----------------------------CSS代码----------------->
img{ float:left;//破坏了容器
}
.auto{ padding-left:120px;//设置padding值,使其距离容器边缘120px显示;
}

				
时间: 2024-10-31 07:37:47

CSS深入了解之padding的相关文章

使用CSS中margin和padding的基础和注意事项

在CSS中,margin和padding是页面布局的主要属性,如何灵活有效使用对于基于DIV+CSS设计网页方法是非常重要的,笔者经常使用且经常误使用,所以根据经验和网上资料整理出切合自己的内容,以备以后使用. 一.首先了解CSS盒模型 Box Model 通过这个CSS盒模型模型就很容易理解Margin.padding和Border.. W3C定义的盒模式如下: width和height定义的是Content部分的宽度和高度,padding border margin的宽度依次加在外面.背景会

CSS中margin和padding的区别

本文导读:padding margin都是边距的含义,关键问题得明白是什么相对什么的边距.padding是控件的内容相对控件的边缘的边距.margin是控件边缘相对父空间的边距. 在CSS中margin是指从自身边框到另一个容器边框之间的距离,就是容器外距离.在CSS中padding是指自身边框到自身内部另一个容器边框之间的距离,就是容器内距离. 下面讲解 padding和margin常用的用法 一.padding 1.语法结构 (1)padding-left:10px; 左内边距 (2)pad

css 巧用 margin/padding 的百分比值实现高度自适应(多用于占位,避免闪烁)

一个基础却又容易混淆的 css 知识点 本文依赖于一个基础却又容易混淆的 css 知识点:当 margin/padding 取形式为百分比的值时,无论是 left/right,还是top/bottom,都是以父元素的width为参照物的! 高度自适应占位 假设有这么个场景: 如上图所示,有这么一种用来放图片的容器,图片都是正方形(为了方便举例用正方形,实际上只要固定长宽比例即可).在 PC 端好办,容器的宽高都写死是多少 px,这样即使图片加载不出来容器都不会变型.但是在移动端,由于各机型分辨率

css中margin和padding的用法区别

谈到css中的margin和padding这两个我们几乎每个页面都会用到的属性,我们有必要先来了解一下margin和padding 1.什么是margin和padding 谈到margin和padding我们就有必要了解一下css盒模型 (Box Model) 根据上面的这张图我们可以很清晰的看到,margin用来设置外边距,padding用来设置内边距 啥是外边距和内边距,我们看下w3c上面的官方说明: css外边距: 围绕在元素边框的空白区域是外边距.设置外边距会在元素外创建额外的“空白”.

CSS 样式表中padding 的用法

CSS中padding 描述的是内边距的意思,margin是外边距.QSS中同样的道理. 1. padding表示内边距的意思,margin---外边距.2. CSS的 padding 属性定义元素边框与元素内容之间的空白区域.3. padding 接受长度值或百分比值,但不允许使用负值.4. 示例:如果希望所有内边距都是10 像素,只需要设置:padding:10px; 就可以了.5. 也可以分别设置4个边的内边距,只需通过它们的单独属性,分别设置上.右.下.左内边距:* padding-to

网页CSS中*{margin:0; padding:0;}有什么用

* 这东西叫"通配符"用来匹配页面上所有元素.*{margin:0; padding:0;} 像 2L 所说,body ,ul, li ,p,h1~h6,dd,dt 等--都有默认的margin 或padding值的,加上这句就可以删除浏览器这些默认值,方面后面的设置.(注:不是没它不行,只是方便而已) 你加上面那句后页面乱,那是当然的,因为你没加时是基于有默认的margin或padding 进行设置的,去掉了默认值,就当然会乱了.咋办?一,就是不加*{margin:0; paddin

css之使用 | margin | padding

a元素下的图片: 链接: 段落: 这样写的一个好处是,以后如果要XX公司和下面的段落行距变为0,只要将XX公司所在的标签的padding设为0就可以了. head: homelink: 超链接的样式: li的样式: 作用于最后一个li:去掉竖线 日期:

css系列教程--margin padding column(完结)

margin/margin-left/margin-right/margin-top/margin-bottom设置边距属性margin:0;--所有外边距0margin:0 1px;--margin-top/bottom为0.margin-left/right为1pxmargin:1px 2px 3px 4px;--margin-top/right/bottom/left padding与margin类似,使用啦声明内边距的.用法同上 column-count:number:用来定义显示的列数

css之display样式,padding,margin

1. 块级标签变成行内标签 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div style="background-color:red;display:inline;">123</