CSS深入理解之padding

15 篇文章 0 订阅
1 篇文章 0 订阅

慕课学习-->前端开发-->HTML/CSS-->CSS深入理解之padding

Padding

一、Padding对于block水平元素

.div{width:50px;} -->实际宽度50

.div{width:50px;padding:0 15px;} -->实际宽度80

padding影响元素尺寸

 

.div{width:80px;box-sizing:border-box;} -->实际宽度80

.div{width:80px;box-sizing:border-box;padding:0 15px;} -->实际宽度80

Padding不影响元素尺寸

 

.div{width:80px;box-sizing:border-box;padding:0 40px;} -->实际宽度80

.div{width:80px;box-sizing:border-box;padding:0 41px;} -->实际宽度82

.div{width:80px;box-sizing:border-box;padding:0 80px;} -->实际宽度160

Padding同样影响了元素尺寸

 

1、padding值暴走,一定会影响尺寸;

2、widthautopadding影响尺寸

3、widthautobox-sizingborder-box,同时padding值没有暴走,不影响尺寸

二、对于inline水平元素

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

 

应用:高度可控的分割线

1、直接使用字符:注册|登录

2、Inline-block控制:

3、使用inline padding:注册<span></span>登录

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

三、CSS padding负值和百分比值

1、padding不支持任何形式的负值

2、关于padding百分比值

(1) Padding百分比均是相对于宽度计算的

(2) 应用:轻松实现一个正方形 .div{padding:50%}

3、inline水平元素的padding百分比值

(1) 同样相对于高度计算

(2) 默认的高度宽度细节有差异

(3) Padding会断行

<span style="padding:50%;background:#eee;">内有文字若干</span>

Span制作正方形是fone-size:0;

四、标签元素的内置padding

1、ol/ul列表

(1)ol/li元素内置padding-left,但是单位是px不是em

(2)例如Chrome浏览器下是40px

(3)所以如果字号很小,间距就会很开;

(4)如果字号很大,序号会爬到容器外面;

(5)开发时,文字大小一般为12-14pxpadding-left22-25px较为合适

例子:

<ol style="background:#eee;">
	<li>Coffee</li>
    <li>Tea</li>
    <li>Milk</li>
</ol>
<img src="default-avatar.png" style="border:#abc solid 1px;width:100px;">
ol{padding-left:22px;}
li{font-size:14px;}

2、表单元素的内置padding

(1)所有浏览器的input/textarea输入框内置padding

(2)所有浏览器的button按钮内置padding

(3)部分浏览器select下拉内置padding,如FireFox IE8+可以设置padding

(4)所有浏览器的radio/checkbox单复选框无内置padding(设置无效)

(5)Button按钮元素的padding最难控制

3、button表单按钮padding

(1)Chrome浏览器,padding

(2)FireFox浏览器,设置padding:0,左右依然有padding!应该设置成:button::-moz-focus-inner{padding:0;}

(3)IE浏览器,IE7文字越多,左右padding逐渐变大。设置button{ overflow:visible;},会变成padding:0的效果

(4)Padding与高度计算的不兼容。

例如:button{line-height:20px;padding:10px;border:none;}IE7:45pxIE8+:40pxFireFox:42pxChrome:40px

(5)建议:

<button id="btn"></button>
<label for="btn">按钮</label>
label{display:inline-block;line-height:20px;padding:10px;}

IE7:40pxIE8+:40pxFireFox:40pxChrome:40px

五、CSS padding与图形绘制

示例1

<div id="" class="line-tri">
.line-tri{
	width:150px;
	height:30px;
	padding:15px 0;
	border-top:30px solid;
	border-bottom:30px solid;
	background-color:currentColor;
	background-clip:content-box;
}

示例2

<div id="" class="eye">
.eye{
	width:150px;
	height:150px;
	padding:10px;
	border:10px solid;
	border-radius:50%;
	background-color:currentColor;
	background-clip:content-box;/*让背景色只在内容区域显示*/
}

六、padding与布局

1、使用百分比单位构建固定比例布局结构

2、配合margin等高布局

<div class="box">
	<div class="child-orange">
		<div class="item">左</div>
		<div class="item">左</div>
		<div class="item">左</div>
	</div>
	<div class="child-green">
		<div class="item">右</div>
	</div>
</div>
.box{overflow:hidden;resize:vertical;}
.child-orange,.child-green{width:50%;margin-bottom:-600px;padding-bottom:600px;}
.child-orange{float:left;background:orange;}
.child-green{float:left;background:green;}
.item{line-height:30px;text-align:center;}

3、两栏自适应布局

<div>
	<img src="default-avatar.png" style="width:110px;">
	<div id="" class="auto">本例子实现的是,图片宽度固定,后面文字信息自适应的效果。原理如下:容器有个固定的padding-left值,此时文字应该在120像素处显示,但是,由于图片浮动(或者绝对定位),不在流中,因此文字。。。</div>
</div>
.auto{padding-left:120px;}
img{float:left;}

 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值