从逻辑思维中学习CSS,从宽高说起
从宽高说起
从宽高说起,我们知道一个物体的大小是由长、宽、高三个方向的尺寸决定的,但是你想啊电脑显示器是一个平面的,而不是3维,另因网页大部分情况下只需要使用到2维,所以为了简单在CSS中只有宽和高的设置。
有了宽和高的概念以后,就会产生另外一个问题,如果内容超出宽和高以后是该显示还是隐藏呢?为了解决这个问题CSS提供了一个overflow属性,它允许你对元素内容超出后做相应的处理,然而很不幸的是不少人对overflow属性存在着误解,比如下面这段代码
<style>
.box{
width:200px;
}
span{
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
}
</style>
<div class="box">
<span>CSS逻辑思维</span>
</div>
这段代码的写作者希望当span中的内容超出一行后显示省略号,但是他却忽略了一个事实,overflow只在当内容超出元素所设置的宽或高才会起作用,而写作者并没有给span设置宽度(当然也设置不了,因为它是行内元素),而又因行内元素的宽高是由内容决定的,也就是它的宽和高是自适应的,因此这段代码是有问题的,有些人会奇怪为什么块元素不设置宽度也可以实现文本溢出隐藏,首先你一定要明白一个道理overflow属性只在内容超出元素所设置的宽高才可以使用,如果没有超出哪来的溢出一说?再则CSS也不知道你需要在什么时候隐藏,它只能是在宽和高不够了才去做处理,而块元素之所以可以是因为它是满足这个条件的,也就是说尽管你没有手动去设置宽度,但是块元素它本身就有宽度(默认父元素的宽)。

而我们再来看看行内元素

很明显它的宽高是自适应的。
这也就是为什么行内元素无法给文本设置text-align对齐方式的原因。
再说css中的box-sizing
为什么CSS要新增box-sizing这个属性呢?如果我们把场景切换到现实生活中,你会发现生活中,我们很少去说类似我要买一个宽200cm,高150cm,边框8cm的显示器,而是说宽200cm,高150cm(一般说几寸)。
而在CSS3之前我们是无法直接去设置一个元素的宽度的,因为元素的宽度是由width + padding + border-left + border-right相加而成的,我们平时在CSS中设置的width并不是元素真正的宽,而只是内容的宽度,然而更多的时候我们是希望width是包含padding和border的,这也是为什么在CSS3中需要加box-sizing这个属性。
这个box-sizing一出世又有些人对box-sizing存在着疑惑,为什么没有box-sizing:margin-box;这一条?我想反问一句:你家房子外面的地盘是你家的吗?把这句话拿到前面这个问题:margin是width的吗?默念3遍,当然要让width包含margin也不是不能实现,只是这种情况需求很小,而且也可以通过其他方式实现。
从逻辑思维中学习CSS,从宽高说起的更多相关文章
- WEB学习-CSS行高、字体,链接的美化以及背景
行高和字号 CSS中,所有的行,都有行高.盒模型的padding,绝对不是直接作用在文字上的,而是作用在“行”上的. 单行文本垂直居中 文本在行里面是居中 其中,行高:盒子高; 需要注意的是,这个小技 ...
- web前端——实例中学习css,javascript
最近闲暇时候在研究前端的样式和js,以前都是从w3school上看看那些选择器和DOM操作方法很少去实际做demo来研究,做的过程当中才真切感觉到纸上得来终觉浅,看得懂跟能做出东西完全两码事,尤其在定 ...
- 李洪强和你一起学习前端之(6)css行高,盒模型,外边距
李洪强和你一起学习前端之(6)css行高,盒模型,外边距 复习昨天的知识 1.1css书写位置: 内嵌式写法 外联式写法 <link href = "1.css" rel = ...
- web中的CSS、Xpath等路径定位方法学习
今天不到八点就到公司了,来的比较早,趁着有点时间,总结下web中的CSS.Xpath等路径定位定位的方式吧! 简单的介绍下xpath和css的定位 理论知识就不罗列了 还是利用博客园的首页.直接附上代 ...
- 开始学习css
今天开始学习css:应用一本<HTML5与CSS3网页设计基础> 先学习css样式规则声明. Body{ color:blue} 对应:选择符:{声明属性:声明值}: Background ...
- 【图片版】学习CSS网格布局
简言 CSS网格布局(Grid)是一套二维的页面布局系统,它的出现将完全颠覆页面布局的传统方式.传统的CSS页面布局 一直不够理想.包括table布局.浮动.定位及内联块等方式,从本质上都是Hack的 ...
- 【转】css行高line-height的一些深入理解及应用
一.前言 前两天在腾讯ISD团队博客上看到一篇翻译的文章“深入理解css 行高”,是个不错的文章,学到了不少东西,建议您看看. 这里,我也要讲讲我对line-height的一些理解,所讲解的东西绝大多 ...
- vue—你必须知道的 js数据类型 前端学习 CSS 居中 事件委托和this 让js调试更简单—console AMD && CMD 模式识别课程笔记(一) web攻击 web安全之XSS JSONP && CORS css 定位 react小结
vue—你必须知道的 目录 更多总结 猛戳这里 属性与方法 语法 计算属性 特殊属性 vue 样式绑定 vue事件处理器 表单控件绑定 父子组件通信 过渡效果 vue经验总结 javascript ...
- 学习 CSS 样式
1.CSS浮动 : http://www.cnblogs.com/zhongxinWang/archive/2013/03/27/2984764.html (1)一个重要结论: ...
随机推荐
- vue js校验金钱、数字
// 校验保留两位小数金额 export function isMoney(money) { var reg = /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1} ...
- c++沉思录 学习笔记 第五章 代理类
Vehicle 一个车辆的虚基类 class Vehicle {public: virtual double weight()const = 0; virtual void start() = 0; ...
- python+selenium—webdriver入门(二)
本文中主要介绍webdriver常见的对象定位方法: 一.对象定位的目的 二.常见的对象定位方法 一.对象定位的目的: 1.操作对象 2.获得对象的属性,如:对象的class属性.name属性等 3. ...
- [uboot] (第五章)uboot流程——uboot启动流程
http://blog.csdn.net/ooonebook/article/details/53070065 以下例子都以project X项目tiny210(s5pv210平台,armv7架构)为 ...
- Linux学习---GCC编译常见错误
预处理错误: No such file or directory 出错原因:①包含错误:eg #include <abc.h> //abc.h为用户自行编写文件 解决方法:⑴应改为#in ...
- 单片机之PID算法
说到PID算法,想必大部人并不陌生,PID算法在很多方面都有重要应用,比如电机的速度控制,恒温槽的温度控制,四轴飞行器的平衡控制等等,作为闭环控制系统中的一种重要算法,其优点和可实现性都成为人们的首选 ...
- Beta冲刺 (1/7)
Part.1 开篇 队名:彳艮彳亍团队 组长博客:戳我进入 作业博客:班级博客本次作业的链接 Part.2 成员汇报 组员1(组长)柯奇豪 过去两天完成了哪些任务 熟悉并编写小程序的自定义控件 展示G ...
- 2-postman批量执行接口
1.postman环境设置与使用 1)点击设置,添加按钮 2)填写环境名称,参数 3)切换环境 4)使用环境变量,使用格式为:{{变量名}} 2.postman批量执行接口 1)选择要执行的文件夹,点 ...
- 关于SGA中的granule size
1.什么是granule? granule直译为颗粒,ORACLE为SGA 中的组件(eg:log buffer/db buffer/large pool等)分配的最小单元为一个granule. 所以 ...
- 我知道的nginx配置
1.nginx配置文件 2.配置访问域名 #京淘商品管理系统 server { listen 80; server_name manage.jt.com; location / { proxy_pas ...