css盒子模型(3)
盒子模型
版权声明
- 本文原创作者:雨点的名字
- 作者博客地址:https://home.cnblogs.com/u/qdhxhz/
在讲理论之前,我们先要知道网页设计中常听的属性名:内容(content)、填充(padding)、边框(border)、边界(margin), CSS盒子模式都具备这些属性。
那具体指什么含义呢,我用通俗的话来给大家解释一下:
就好比你现在网上买了一个手机华为,那么新手机肯定是放在一个盒子里给你寄来。那么这华为本身就指的是内容(content),为了让手机安全寄到会在盒子里放点泡沫这就是填充(padding),那么这个盒子本身肯定是有它的宽度的这叫边框(border),每个盒子与每个盒子之间(也可以是块与块)的距离叫边界(margin)。
下面这个图看不懂没关系,接下来我会详细讲。

我们先来看一个小案例:我设置好一个块级标签的宽度为250;
<!DOCTYPE html>
<html>
<head>
<title>盒子模型</title>
<style type="text/css">
div{
width:250px;
padding:10px;
border:5px solid red;
margin:10px;
}
</style>
</head>
<body>
<div>欢迎关注博客园博客:雨点的名字</div>
</body>
</html>
运行结果:下面里面那圈黑线是我自己加进去的,为的是让大家看的更加清楚padding是哪一部分。它这里总宽度就指:文字内容宽度:250;中间空白:10px(左右各10);boeder宽度:5px(左右各5);margin:10px(左右各10),所以总共真是的宽度为300px。

因此,在盒子模型中,我们设置的宽度都是内容宽度,不是整个盒子的宽度。而整个盒子的宽度是:(内容宽度 + border宽度 + padding宽度 + margin宽度)之和。这样我们改四个中的其中一个,都会导致盒子宽度的改变。这对我们来说不友好。具体怎么解决我们晚点讲,接下来我们还是先讲属性。
1:边框(border)
<!DOCTYPE html>
<html>
<head> <title>CSS的盒子模型</title>
<style type="text/css"> input{ /*先统一去除表单原本的样式*/
border: none; /*默认情况下标签的border都是none,而input标签你使用的时候发现在外面会有一圈,所以input默认是有的*/
outline-style: none;/*这个有和没有也是有差别的,具体你可以自己测试,细微不同我这里就不延伸了*/
} .username{
border: 1px dashed red;
background: yellowgreen;
} .username:focus{ /*这里代表当class="username"的元素,一旦获得焦点那么元素的背景色就会改变*/
background-color: red;
} .email{
border-bottom: 1px solid red; /*这个就代表就在底部设置一条线*/
} .mobile{
border:1px solid green; } </style>
</head>
<body>
<label for="usernameid">用户名: </label> <!--这里的for=“”,这个是和input的id绑定,当我们点击input前面的文本标识会自动聚焦到文本框-->
<!--这个例子,当我点击用户名的时候也就相当于input获得了焦点,也就是光标会自动定位到文本框里-->
<input type="text" class="username" id="usernameid">
<br>
<br>
<label for="emailid">邮 箱:</label>
<input type="text" class="email" id="emailid">
<br>
<br>
<label for="mobileid">电话: </label>
<input type="text" class="mobile" id="mobileid">
</body>
</html
运行结果如下:

上面实现几个特点:1:用户名右边文本框得到焦点,那么背景色会自动变成红色。2:当你点击用户名焦点会到input文本框中3:邮箱中的input告诉我们为什么前面要对input标签做一个处理去掉border。
注解:border: none : 取消表单边框
outline-style:none;取消表单轮廓线
.username:focus :直接为这个类的标签添加焦点事件,这个很有用需要大家牢记
2:填充(padding)
<!DOCTYPE html>
<html>
<head>
<title>margin</title>
<style type="text/css">
div{
margin:10px;
}
</style>
</head>
<body>
<div>11111</div>
<div>22222</div> <!--尽管上面的margin-bottom为10;下面的margin-top为10,按常理来说应该是10+10=20-->
<div>33333</div> <!--,但是答案仍然是10px--> </body>
</html
运行结果:

再看盒子的宽度
前面提到,为盒子模型设置宽度,结果只是设置了内容的宽度,这个不合理。如何解决这一问题?答案就是:box-sizing:border-box

如上图(别的博客引用过来),div设置了box-sizing:border-box之后,300px的宽度是内容 + border + 边框的宽度(不包括margin),这样就比较符合我们的实际要求了。
建议大家在为系统写css时候,第一个样式是:

大名鼎鼎的bootstrap也把box-sizing:border-box加入到它的 * 选择器中,我们为什么不这样做呢?
总结:关于盒子模型我就先讲这么多,接下来有关css或者http不着重写了,因为我本来是后台开发的,只是现在学了点http所以做个笔记,也没有想到这东西越写越多,在总结下去估计写不完了,还有一些比较重要的,比方说相对定位,标准流什么的,大家有兴趣总结去整理,以后我要用得到了我会在整理的。
欢迎大家给我纠错,或者没有写全的欢迎大家补充,谢谢了。
css盒子模型(3)的更多相关文章
- 深入理解CSS盒子模型
在CSS中浮动.定位和盒子模型,都是很核心的东西,其中盒子模型是CSS很重要基石之一,感觉还是很有必要把CSS盒子模型相关知识更新一下...... CSS盒子模型<BoxModel>示意图 ...
- CSS盒子模型的理解
标准的CSS盒子模型包括:内容(content).填充(padding).边框(border).边界(margin) 这些属性,可以把它转移到我们日常生活中的盒子(箱子)上来理解,日常生活中所见的盒子 ...
- 每天学点前端——基础篇1:css盒子模型,绝对定位和相对定位
什么是css盒子模型(Box Model)? W3C中解释为:规定了元素框处理元素内容.内边距.边框和外边距的方式: MDN:文档中的每个元素被描绘为矩形盒子.渲染引擎的目的就是判定大小,属性--比如 ...
- CSS 盒子模型概述
一.简介 CSS 盒子模型(元素框)由元素内容(content).内边距(padding).边框(border).外边距(margin)组成. 盒子模型,最里面的部分是实际内容:直接包围内 ...
- 标准的CSS盒子模型?与低版本IE的盒子模型有什么不同的?
CSS盒子模型:由四个属性组成的外边距(margin).内边距(padding).边界(border).内容区(width和height); 标准的CSS盒子模型和低端IE CSS盒子模型不同:宽高不 ...
- 理解CSS盒子模型
概述 网页设计中常听的属性名:内容(content).填充(padding).边框(border).边界(margin),CSS盒子模型都具备这些属性,也主要是这些属性. 这些属性我们可以把它转移到我 ...
- 几个容易出错的css盒子模型细节
css是前端必须掌握的技能之一.其中的box模型,如图所示: 大体就是border.margin.padding和content,概念挺好理解.但当盒子模型与其他属性一块使用时产生的现象,或许您还难以 ...
- <转>HTML+CSS总结/深入理解CSS盒子模型
原文地址:http://www.chinaz.com/design/2010/1229/151993.shtml 前言:前阵子在做一个项目时,在页面布局方面遇到了一点小问题,于是上stackoverf ...
- 聊聊css盒子模型
css盒子模型原理: 在网页设计中常听的属性名:内容(content).填充/内边距(padding).边框(border).外边距(margin), CSS盒子模式都具备这些属性. 这些属性我们可以 ...
- css 盒子模型理解
盒子模型是html+css中最核心的基础知识,理解了这个重要的概念才能更好的排版,进行页面布局.下面是自己积累和总结的关于css盒子模型的知识^_^,希望对初学者有用. 一.css盒子模型概念 CSS ...
随机推荐
- jQuery的事件绑定命名空间
jQuery的bind的函数在实际应用中用的不是特别多,只是他可以绑定一个事件,但不会即时触发,也可以通过unbind来解除绑定.在没有看到这篇文章之前,我一直不知道原来bind也可以有命名空间.事实 ...
- Samples for Parallel Programming with the .NET Framework
The .NET Framework 4 includes significant advancements for developers writing parallel and concurren ...
- Python使用虚拟环境
这里想象一下需求,写一个项目使用的一系列1.0版本的插件,现在要新写一个项目,需要用这些插件的2.0版本,该怎么办?都更新成2.0版本?这样之前的项目都没法维护了 这时我们需要一个虚拟环境,Pytho ...
- 转载:Allegro实用技巧之模块复用
http://bbs.ednchina.com/BLOG_ARTICLE_3031842.HTM?click_from=8800032437,9950148743,2016-01-04,EDNCOL, ...
- tomcat集群日志切割和远程备份脚本分享
笔者一共有3台tomcat服务器,一共4个tomcat服务,未来还会增加4个作为负载,笔者想通过在存储服务器对tomcat服务的日志进行远程切割和备份到存储上. 文中采用清空日志的方式,优点是不用重启 ...
- c语言的预处理指令分3种 1> 宏定义 2> 条件编译 3> 文件包含
宏简介 1.C语言在对源程序进行编译之前,会先对一些特殊的预处理指令作解释(比如之前使用的#include文件包含指令),产生一个新的源程序(这个过程称为编译预处理),之后再进行通常的编译 所有的预处 ...
- Servlet&JSP-HTTP报文头获取及应用
完整代码请参考:https://github.com/devway9/java-exercise/tree/master/servlet-jsp 目录 1 HttpServletRequest获取报文 ...
- 安装vue-cli时出现的错误,cmd 卡住
今天在构建vue 时遇到个问题, cmd 执行 vue init webpack my-project 时 , 出现如下乱码, 然后 页面 卡住在 项目说明 ,操作不了, 最后发现是 nodejs 版 ...
- Swarm 如何存储数据?- 每天5分钟玩转 Docker 容器技术(103)
service 的容器副本会 scale up/down,会 failover,会在不同的主机上创建和销毁,这就引出一个问题,如果 service 有要管理的数据,那么这些数据应该如何存放呢? 选项一 ...
- js 消抖(debounce)与节流(throttle)
前言 故事发生在与大创的又一次撕逼(日常)中,我方坚定的认为:作为社会主义接班人,节流与消抖的界限是明显的,是不容混肴的,是不可侵犯的!对方辩友坚持地觉得:界限是模糊的,行为是暧昧的,性别是可以忽视的 ...