1、替换元素
咱们依据外在盒子能够分为内联元素和块级元素,依据是否具备可替换内容,咱们也能够分为替换元素和非替换元素
咱们把通过批改某个属性值出现的内容就能够被替换的元素称为替换元素,<img> <object><video> <iframe><textarea><input>
这一类都是典型的替换元素
特点:
- 内容不受页面上的
css
的影响 ,款式体现在css
作用域之外,如果要替换元素自身的外观,须要相似appearance
的属性。或者是浏览器自身裸露的接口。然而间接input[type='checkbox']
没方法扭转内间距背景色等个性 -
有本人的尺寸 很多替换元素没有明确尺寸设定的时候,
- 默认尺寸是 300*150px 如果是
<video> <iframe> <canvas>
–<img>
默认是 0 - 表单的替换元素的尺寸和浏览器有关系
- 默认尺寸是 300*150px 如果是
- 在 css 属性上有一套本人的体现规定 典型的就是
vertical-align
。比方它的值是baseline
时候,非替换元素就是x
下边缘,替换原色就是元素的下边缘
2、display 与替换元素
所有的替换元素都是内联程度元素
然而表现形式不一样,不同的元素不同的浏览器体现都不一样 ie
和chrome
的返回值都是一样的,然而 firefox
在textarea
中和绝大多数的 input
返回的是inline
而不是 inline-block
,
然而咱们不必关怀他们的 display
一样不一样因为
替换元素有很多体现规定和非替换元素不一样。其中之一就是宽度和高度的计算规定。简略形容一下就是:替换元素的
displays
是inline block
和inline-block
中的任意一个,尺寸计算规定都是一样的。
3、尺寸计算规定
替换元素有三种尺寸,固有尺寸、html 尺寸、css 尺寸
- 固有尺寸 替换元素的本来尺寸,参见 what 替换元素第一点
- html 尺寸 就是
<img width="100">
这里的width height
属性 - css 尺寸 通过 css 的 width 和 height 还有 max-width/min-width max-height/min-height
计算规定如下:
- 没有 css 尺寸和 html 尺寸,就用固有尺寸
- 没有 css 尺寸就用 html 尺寸
- 有 css 尺寸可就用 css 属性决定尺寸
- 如果固有尺寸含有固有的宽高比,然而 css 和 html 尺寸只设置了宽或者是高,还是依照原来的宽高比设置
- 如果上边都不合乎,最终表现形式是宽 300,高度是 150
- 内联元素和块级元素应用同一套计算规定
对于 img 能够查看 object-fit 的相干属性来实现更好的利用。
4、替换元素与非替换元素
1、替换元素与非替换元素只差了一个 src
firefox 的 img 如果为空的话,disolay:block;outline:1px solid; 宽度会百分之百适应父元素,体现起来就是 span,同时设置宽高也没什么用。齐全就是一个非替换元素
chrome 也有相似的个性,没有 src 的同时只有上边有 alt 的属性和属性值,看起来也和非替换元素的表现形式统一
2、只差了一个 content 属性
在 chrome 浏览器下:
img{content:url(1.jpg)}
<img>
上边的成果和 <img src="1.jpg">
一样的
还有一点就是,如果图片是有 src 地址的,咱们能够通过 content 属性把图片的内容替换掉。然而扭转的仅仅是视觉出现,如果右键保留的时候,事实的还是原来的 src 对应的图片
文字边图片的案例如下:
<h1>《css 世界》</h1>
h1{
width:180px;
height:36px;
background:url(logo.png);
text-indent:-999px;
}
# 也能够应用 content 一行代码实现成果
h1{content:url(logo.png)}
解决办法很完满是不是,然而还是有点缺点的。咱们没方法设置大小,只能是一倍图,导致看来有点含糊,挪动端的话倡议应用 svg 图片
3、content 与替换元素
content 属性生成的对象称之为匿名替换元素。所以 content 生成的元素和一般元素有很多的不同的个性体现。
- 咱们应用
content
生成的元素无奈选中,同时阅读器和 SEO 都很不好,所以不要放重要的货色 - 不能左右:
:empty
伪类 - 动静生成的值没方法获取。
作者:白璞 1024
链接:https://www.jianshu.com/p/072…
起源:简书
著作权归作者所有。商业转载请分割作者取得受权,非商业转载请注明出处。