Uint 5.css继承权重,盒模型和border padding
一 .css的继承性和权重
1.1 继承性:继承是CSS的一个主要特征,它是依赖于祖先-后代的关系的。继承是一种机制,它允许样式不仅可以应用于某个特定的元素,还可以应用于它的后代。 可以被继承的属性有:color,font-*,text-*,line-*就这4个文本属,不能被继承的属性有:盒子元素,定位元素(浮动,绝对定位,固定定位).
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>测试</title>
<style type="text/css">
/* p和span标签将会继承body的属性设置 */
body{
background-color: greenyellow;
}
/* 如果下面的不被注释掉,那么p会覆盖body设置的属性 */
p{
background-color: red;
} </style>
</head>
<body>
<span>我是一行内容</span>
<p>我是一个段落</p> </body>
</html>
继承性测试
1.2 权重(优先级):所谓CSS优先级,即是指CSS样式在浏览器中被解析的先后顺序.
样式表中的特殊性描述了不同规则的相对权重,它的基本规则是:
1 内联样式表的权值最高 style=""------------1000;
2 统计选择符中的ID属性个数。 #id --------------100
3 统计选择符中的CLASS属性个数。 .class -------------10
4 统计选择符中的HTML标签名个数。 p ---------------1
按这些规则将数字符串逐位相加,就得到最终的权重,然后在比较取舍时按照从左到右的顺序逐位比较。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>css层叠性</title>
<style type="text/css"> /* 层叠性: 权重的标签覆盖掉了权重小的标签,说白了 ,就是被干掉了
权重: 谁的权重大,浏览器就会显示谁的属性 谁的权重大? 非常简单 数数 id的数量 class的数量 标签的数量 */ /* 对比权重 第一位,发现#box大于其他的,后面不就比较了. */
/* 1 0 0 */
#box{
color: red;
}
/* 0 1 0 */
.con{
color: greenyellow;
}
/* 0 0 1 */
p{
color: gold;
}
</style>
</head>
<body>
<p id="box" class="con">
我是什么颜色?
</p>
</body>
</html>
权重例子
1.3 权重相同时怎么处理?
此时有3种情况.
1.如果属性不是继承来的,权重相同时,后设置的属性生效,也就是后来者居上.
2.如果属性是继承来的,那么适用就近原则,谁的描述离标签近,就显示谁的属性.
3.如果都是继承下来的且都是靠都一样近,那么就要比较权重了.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>层叠性2</title>
<style type="text/css">
/* 比较id数量 class数量 标签数量 */
/* #box1 .wrap1 p{
color: red;
}
#box2 .wrap3 p{
color: green;
} */
/* p标签在这里是继承wrap3,继承的权重为0 */
/* #box1 #box2 .wrap3{
color: red; } */
/* 1 1 1 */
/* #box2 .wrap3 p{
color: greenyellow;
} */
/* x下面2个都是继承来的属性且和p标签都一样近,这时候就要比较权重了. */
/* 2 1 1 */
#box1 #box2 .wrap3 p{
color: green;
}
/* 1 1 1 */
#box2 .wrap3 p{
color: greenyellow;
} </style>
</head>
<body>
<!-- 当权重一样的时候,后设置的属性生效.(后来者居上) 后面的覆盖前面的
继承的权重为0
总结:
1.先看有没有被选中,如果被选中,比较权重.
2.没有被选中,权重为0
3.如果属性都是继承下来的,权重都是0,然后本着"就近原则":谁的描述离标签近,就显示谁的属性 .
如果都是继承下来的且都是靠都一样近,那么就要比较权重了. -->
<div id="box1" class="wrap1">
<div id="box2" class="wrap2">
<div id="box3" class="wrap3">
<p>我是一个段落.</p>
</div>
</div>
</div>
</body>
</html>
权重相同例子
1.4 !important属性
!important表示权重无限大. 它不影响继承来的权重(在继承来的属性上设置无效)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>权重深入important</title>
<style type="text/css">
/* !important表示权重无限大. 它不影响继承来的权重(在继承来的属性上设置无效).
尽量少用.
*/
p{
color: pink !important;
font-size: 12px !important;
}
.sep1{
color: red;
font-size: 30px;
}
.sep2{
color: greenyellow;
font-size: 40px;
} </style>
</head>
<body>
<div>
<p class="sep1 sep2">我是什么颜色?</p>
<p class="sep2 sep1">我是什么颜色?</p>
</div>
</body>
</html>
!important
二. 盒模型
CSS 框模型 (Box Model) 规定了元素框处理元素内容、内边距、边框 和 外边距 的方式。

元素框的最内部分是实际的内容,直接包围内容的是内边距。内边距呈现了元素的背景。内边距的边缘是边框。边框以外是外边距,外边距默认是透明的,因此不会遮挡其后的任何元素。内边距、边框和外边距都是可选的,默认值是零。在 CSS 中,width 和 height 指的是内容区域的宽度和高度。增加内边距、边框和外边距不会影响内容区域的尺寸,但是会增加元素框的总尺寸。外边距可以是负值.内边距、边框和外边距可以应用于一个元素的所有边,也可以应用于单独的边。
盒模型的计算:
假设框的每个边上有 10 个像素的外边距和 5 个像素的内边距。如果希望这个元素框达到 100 个像素,就需要将内容的宽度设置为 70 像素,请看下图:
padding属性:
定义元素的内边距。padding 属性接受长度值或百分比值,但不允许使用负值。 详细介绍:padding
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>认识padding</title>
<style type="text/css">
.box1{
width: 300px;
height: 300px;
/*padding: 20px;*/
background-color: red;
/*border:2px solid red;*/
/*小属性写法*/
/*padding-top: 20px;
padding-bottom: 20px;
padding-left: 20px;
padding-right: 20px;
/*综合属性写法,注意,综合属性写法的时候,是按照顺时针的方式设置padding的(上右下左)*/
/*4个值表示 上 右 下 左*/
/*padding:20px 30px 40px 50px;*/
/*3个值表示 上 左右 下*/
padding:20px 30px 40px;
/*2个值表示 上下 左右*/
padding:20px 30px;
/*1个值表示 上下左右*/
padding:20px; }
</style>
</head>
<body>
<!-- padding就内边距,padding是有背景颜色的.背景色和区域颜色是一样的.也就说background-color将会填充整个border以内的区域.
padding的距离就是border到内容区域的距离.
padding是有4个方向的.所有我们能分别描述4个方向的padding.
两种方法:
1.写小属性.
2.写综合属性,用空格隔开.
-->
<div class="box1">
哈哈哈哈哈哈哈啊哈
</div>
</body>
</html>
padding的属性方法
body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset, legend, input, button, textarea, p, blockquote, th, td都是有padding属性的.
border属性:
元素的边框 (border) 是围绕元素内容和内边距的一条或多条线。CSS border 属性允许你规定元素边框的样式、宽度和颜色。 详细介绍:border
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>认识border</title>
<style type="text/css">
.box{
width: 200px;
height: 300px;
border: 5px solid red;
}
/*写小属性的方法:*/
/* .box{
border-width: 5px 10px;
border-style: solid dotted double dashed;
border-color: green red blue pink;
}*/
/*按照方向区分*/
.box{
border-top-width: 2px;
border-top-style: solid;
border-top-color: red; border-right-width: 2px;
border-right-style: solid;
border-right-color: red; border-bottom-width: 2px;
border-bottom-style: solid;
border-bottom-color: red; border-left-width: 2px;
border-left-style: solid;
border-left-color: red;
}
/*指定方向不设置border border-left:0 也表示没有border*/
.box{
border-left: none; } </style>
</head>
<body>
<!-- border:边框.有3个要素:
1.粗细,如果不填写此属性,但是填写了线性(solid).默认的粗细是3px
2.线性
3.颜色,如果不填写此属性,默认是黑色
-->
<div class="box">哈哈哈</div>
</body>
</html>
border属性方法
margin属性:
围绕在元素边框的空白区域是外边距。设置外边距会在元素外创建额外的“空白”。margin属性接受任何长度单位、百分数值甚至负值。详细介绍:margin
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>margin基础</title>
<style type="text/css">
*{
padding: 0;
margin: 0;
}
/*一般情况下,左边的margin要比上边的宽,因为有一个塌陷效应,body本身是有8px的margin,我们设置20px的时候,会把body本身的margin塌陷到我们设置的20px里.所以上方的margin就是20px,左边则是28px*/
div{
width: 300px;
height:300px;
border: 5px solid green;
background-color: pink;
margin: 20px;
}
/*margin也可以设置4个方向的距离,用法和border类似*/
</style>
</head>
<body>
<div>
哈哈哈
</div>
</body>
</html>
margin属性方法
注意:
border,padding,margin都可以通过值复制来设置相应的粗细或者边距.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>测试</title>
<style type="text/css"> div{
width: 200px;
height: 200px;
border: 2px solid red;
border-style: solid;
border-color: red;
border-width: 2px 6px;
padding: 3px 5px ;
margin: 10px 20px;
} /*4个值表示 上 右 下 左*/
padding:20px 30px 40px 50px;
/*3个值表示 上 左右 下*/
padding:20px 30px 40px;
/*2个值表示 上下 左右*/
padding:20px 30px;
/*1个值表示 上下左右*/
padding:20px;
</style>
</head>
<body>
<div></div>
<span>我是一行内容</span>
<p>border的值复制是通过border-width来设置的</p> </body>
</html>
值复制
Uint 5.css继承权重,盒模型和border padding的更多相关文章
- Css盒模型有哪几部分,标准盒模型和IE盒模型有哪些区别
首先介绍Css的盒模型也就是标准盒模型(BOX Model) 包含了 内容(content) 内边距(padding) 边框(border) 外边框(margin) 这是大家经常用到的,也是现在的标准 ...
- CSS:盒模型和position定位
盒模型 页面上显示的每个元素(包括内联元素)都可以看作一个盒子,即盒模型( box model ).请看Chrome DevTools 里的截图: 可以显而易见的看出盒模型由 4 部分组成.从内到外分 ...
- CSS盒模型和margin重叠
在 CSS 中,width 和 height 指的是内容区域的宽度和高度.增加内边距.边框和外边距不会影响内容区域的尺寸,但是会增加元素框的总尺寸.(div的实际占用尺寸变打了) 但: 一旦为页面设置 ...
- IE盒模型和W3C盒子模型的区别
其实这个问题到现在真的是没有意义了,因为早在IE6的兼容模式开始就已经弃用了IE盒子模型了,但是现在的各种面试题还是会时常出现这样的上世纪的题目,我觉得其实时纯粹的刁难. 好了,吐槽不多说了,直接上图 ...
- 5.css3盒模型--margin/border/padding/content
1.css3盒模型: ①margin外边距: Margin-top,Margin-right,Margin-bottom,Margin-left ②Border边框: Border-width Bor ...
- 【从0到1学Web前端】CSS定位问题一(盒模型,浮动,BFC) 分类: HTML+CSS 2015-05-27 22:24 813人阅读 评论(1) 收藏
引子: 在谈到css定位问题的时候先来看一个小问题: 已知宽度(假如:100px)div框,水平居中,左右两百年的分别使用div框填充.且左右div自适应. 效果如下图: 这个问题的难点主要是浏览器宽 ...
- CSS盒子模型和IE浏览器
CSS盒模型图解 下面是一幅关于应用了CSS的元素是如何显示它的尺寸的图示. 在本篇文章中,所有的浏览器在计算盒模型总宽度时处理margin属性的方式都是一致的,所以我们将更多的精力放在padding ...
- 关于css盒子模型和BFC的理解
CSS盒子模型 包含元素内容(content).内边距(padding).边框(border).外边距(margin) 一般元素总宽度 = element的width+padding的左右边距+mar ...
- CSS继承总结
CSS的一个重要特征就是继承,它是依赖于祖先-后代的关系的.继承是一种机制,它允许样式不仅可以应用于某个特定的元素,还可以应用于它的后代. CSS可以继承的属性有: 1.文字相关:font-famil ...
随机推荐
- linux下tomcat启动很慢的解决办法
1.用vim编辑器打开tomcat的bin目录下的catalina.sh [root@iz09a32x1sghz3z bin]# vi /usr/local/src/java/tomcats/tomc ...
- vue中如何使用mockjs摸拟接口的各种数据
mockjs的作用 生成模拟数据 模拟 Ajax 请求,返回模拟数据 基于 HTML 模板生成模拟数据(后续更新) 帮助编写单元测试(后续更新) Vue 中使用 mock 有两种使用方式,一种是仅编写 ...
- 少侠学代码系列(一)->JS起源
少侠:喂,有人吗?赶紧出来接客了,有没有人啊 帅气的我:来了来了,少侠有何吩咐? 少侠:把你们店里的秘籍呈上来我要学JS 帅气的我:少侠,别这样,我们秘籍是不外传的,祖上传下来的规矩,传人妖不传男女. ...
- 解决注册并发问题并提高QPS
前言:前面在本地的windows通过apache的ab工具测试了600并发下“查询指定手机是否存在再提交数据”的注册功能会出现重复提交的情况,并且在注册完成时还需要对邀请人进行奖励,记录邀请记录,对该 ...
- Android连续点击多次事件的实现
有时候我们需要实现这样的场景,类似进入开发者模式,即多次点击后执行操作. 首先我们先看一个方法: System提供的一个静态方法arraycopy(),我们可以使用它来实现数组之间的复制. publi ...
- ARM汇编指令集_学习笔记(1)
一.什么是ARM汇编? 运行在ARM处理器上的汇编语言就叫ARM汇编. C程序运行在X86平台,底层就是X86汇编:运行在ARM平台,底层就是ARM汇编.ARM汇编与X86汇编有显著区别. X86属于 ...
- Android 网络框架 Retrofit2
概述 Retrofit是一个OkHttp网络请求框架的封装库,Retrofit通过注解配置网络参数,可以按照我们的规则去构造实际的HTTP请求,能够灵活设置URL.头部.请求体.返回值等,是目前最优雅 ...
- Clickhouse v18编译记录
简介 ClickHouse是"战斗民族"俄罗斯搜索巨头Yandex公司开源的一个极具"战斗力"的实时数据分析数据库,是面向 OLAP 的分布式列式DBMS,圈内 ...
- c/c++ 拷贝控制 右值与const引用
拷贝控制 右值与const引用 背景:当一个函数的返回值是自定义类型时,调用侧用什么类型接收?? 1,如果自定义类型的拷贝构造函数的参数用const修饰了:可以用下面的方式接收. Test t2 = ...
- Ubuntu 16.04 启用 点击Launcher图标,窗口实现最小化 功能
安装了Ubuntu之后,要是每次都点击最小化按钮来实现窗口的最小化,操作起来很不方便,那么怎么样才能方便操作呢, Ubuntu 16.04 本身支持 点击应用程序Launcher图标实现最小化 功能, ...
