[CSS]置换和非置换元素
转自:http://blog.doyoe.com
先进一个题外话
在面试一个 重构(各大公司的叫法可能不太一样)时,我喜欢从一个点开始问,然后一直延展下去成为一条线,甚至是一个面,直到问到不会的地方,然后又换另外一个点。
例如:我可能会说,能简单聊聊
行内级元素和块级元素的区别吗。
一般这时,候选人都会说到 行内级元素 不会换新行,而 块级元素 会格式化为块状,即换行。但也有些遗憾的方面(如:混淆了块元素和块级元素,行内元素和行内级元素),当然这看起来似乎不是特别重要。
这时我会继续问,
行内元素能够定义宽度和高度吗?
不少候选人会说:不能
我会继续问,说几个你熟悉的
行内元素吧
于是 span, strong, em, ins… 答案我还是比较满意的。
我仍然会继续,
img是行内元素么?
候选人这时通常会迟疑一下,可能意识到我接下来想问啥了,但还是会回答:是
于是我会说,那
img能定义宽度和高度么?
有的候选人这时会犹豫,因为如果回答是,就会推翻他之前说的 行内元素不能定义宽高,如果回答不是,似乎又和他所熟知的经验不一致。但通常最后还是会回答:能
那我就又得问,你之前不是说
行内元素不能定义宽高吗?为什么img可以?
到这里,候选人基本上不知道要怎么回答好了,最后可能会告诉我,因为 img 是特殊元素
当然,虽然这么回答也不能说是错误的,但基本上也能知道候选人对这条线的基础的掌握程度了。
但我希望听到的答案是通过解释置换元素相关的概念从而给出答案。
什么是置换元素?
一个 内容 不受CSS视觉格式化模型控制,CSS渲染模型并不考虑对此内容的渲染,且元素本身一般拥有固有尺寸(宽度,高度,宽高比)的元素,被称之为置换元素。
什么是非置换元素?
w3c并没有给出明确的非置换元素的解释,但能确定的是除置换元素之外,所有的元素都是非置换元素。
行内级置换和非置换元素的宽度定义
对于行内级非置换元素,宽度设置是不适用的。
对于行内级置换元素来说,其宽度的设置需遵循以下几点:
- 若宽高的计算值都为
auto且元素有固有宽度,则width的使用值为该固有宽度;典型的例子是:拥有默认宽高的
input当宽度的计算值为auto时,则宽度使用值为其默认的固有宽度 - 若宽度的计算值为
auto且元素有固有宽度,则width的使用值为该固有宽度;
例子同上
- 若宽度的计算值为
auto且高度有非auto的计算值,并且元素有固有宽高比,则width的使用值为高度使用值 * 固有宽高比;
典型的例子:
img当只定义了其高度值时,其宽度将会根据固有宽高比进行等比设置 - 除此之外,当
width的计算值为auto时,则宽度的使用值为300px
典型的例子:比如iframe, canvas
其它类型的置换元素,其宽度的定义都参照行内置换元素的定义。
行内级置换和非置换元素的高度定义
对于行内级非置换元素,高度设置是不适用的。
对于行内级置换元素来说,其高度的设置需遵循以下几点:
- 若宽高的计算值都为
auto且元素有固有高度,则height的使用值为该固有高度; - 若高度的计算值为
auto且元素有固有高度,则height的使用值为该固有高度; - 若高度的计算值为
auto且宽度有非auto的计算值,并且元素有固有宽高比,则height的使用值为:宽度使用值 / 固有宽高比; - 若高度的计算值为
auto且上述条件完全不符,则height的使用值不能大于150px,且宽度不能大于长方形高度的2倍。
其它类型的置换元素,其高度的定义都参照行内置换元素的定义。
[CSS]置换和非置换元素的更多相关文章
- CSS的置换和非置换元素
一个来自面试的坑. 面试的时候考官先问了行内元素和块级元素的区别,这个不难理解.然后一脚就踩进了,置换元素的坑.例如img就是行内置换元素,这种行内元素是可以设置宽高的. 什么是置换元素 一个内容不受 ...
- CSS置换元素和非置换元素
置换元素: 1. 一个内容 不受CSS视觉格式化模型控制,CSS渲染模型并不考虑对此内容的渲染,且元素本身一般拥有固有尺寸(宽度,高度,宽高比)的元素,被称之为置换元素. 2. 置换元素就是浏览器根 ...
- HTML中的置换元素和非置换元素
我们都知道,行内元素不能够定义宽度和高度,但 img,input,button等标签作为行内元素却可以定义宽高,为什么呢?这就牵扯到了置换元素和非置换元素. 置换元素: w3c官方解释:“An ele ...
- 【HTML/CSS】置换元素
置换元素: 一个内容不受CSS视觉格式化模型控制,CSS渲染模型并不考虑对此内容的渲染,且元素本身一般拥有固有尺寸(宽度,高度,宽高比)的元素,被称之为置换元素. 行内级置换和非置换元素的宽度定义 对 ...
- 5:CSS元素类型
5:CSS元素类型 学习目标 1.元素类型分类依据和元素类型分类 2.元素类型的转换 3.inline-block元素类型的应用 4.置换和非置换元素的概念和应用案例 一.元素类型分类依据和元素类型分 ...
- 好程序员web前端分享CSS元素类型
好程序员web前端分享CSS元素类型 目标 1.元素类型分类依据和元素类型分类 2.元素类型的转换 3.inline-block元素类型的应用 4.置换和非置换元素的概念和应用案例 一.元素类型分类依 ...
- CSS2.1SPEC:视觉格式化模型之包含块
原汁原味的才是最有味道的,在阅读CSS标准时对这一点的体会更加深刻了,阅读文档后的一大感觉就是很多看上去理所应当的样式表现也都有了对应的支持机制.本文首先从包含块写起,一方面总结标准中相应的阐述,并且 ...
- 元素类型以及overflow,white-space等属性
1:预格式化标签:<pre></pre>2:overflow属性="visible/hidden(隐藏)"/scroll/auto(自动)/inherit; ...
- 【化繁为简】非前端开发者的福音---CSS的预处理语言 Less&Sass
写在前面: 众所周知CSS 是一门非程序式语言,没有变量.函数.SCOPE(作用域),在前期的界面样式设计时,需要书写大量看似没有逻辑的代码,不方便维护及扩展,也不利于重复调用,尤其对于 ...
随机推荐
- JS初学之-选项卡(图片切换类)
初学选项卡,主要问题卡在了索引值上面,花了较长的时间学习. 索引值其实很好理解,就是为每一个元素用JS的方法添加一个属性,即自定义属性. 在for循环里的函数里用i,会直接弹出这个数组的length, ...
- 本文使用springMVC和ajax,实现将JSON对象返回到页面
一.引言 本文使用springMVC和ajax做的一个小小的demo,实现将JSON对象返回到页面,没有什么技术含量,纯粹是因为最近项目中引入了springMVC框架. 二.入门例子 ①. 建立工程, ...
- CodeForces 558A
Description Amr lives in Lala Land. Lala Land is a very beautiful country that is located on a coord ...
- 【NOIP2014】飞扬的小鸟
看syq的代码写出来的,chty_orz 原题: Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小 ...
- List of devices attached ???????????? no permissions
如果显示如下:List of devices attached???????????? no permissions就要设置usb $ lsusbBus 005 Device 001: ID 1d6b ...
- [hdu 4416]Good Article Good sentence
最近几天一直在做有关后缀自动机的题目 感觉似乎对后缀自动机越来越了解了呢!喵~ 这题还是让我受益颇多的,首先搞一个后缀自动机是妥妥的了 可是搞完之后呢? 我们来观察 step 这个变量,每个节点的 s ...
- 黑马程序员——JAVA基础之set集合
------- android培训.java培训.期待与您交流! ---------- Set: 元素是无序(存入和取出的顺序不一定一致),元素不可以重复. Set接口中常用的类: ...
- rman的使用
下面是两种连接方式[oracle@oracle3A ~]$ rman target/ Recovery Manager: Release 11.2.0.1.0 - Production on Mon ...
- unity shader random number
http://gamedev.stackexchange.com/questions/32681/random-number-hlsl
- html之内联标签a
a标签:定义超链接,用于从一个页面链接到另一个页面,最重要的属性href,如果没有href属性,则不可以使用如下属性:download,hreflang,media,rel,target,type. ...