java content()_理解content(一)
从零开始的前端生活-理解content(一)
替换元素
定义
我们把通过修改某个属性值呈现的内容就可以被替换的元素被称为"替换元素"。
比如 ,我们只需修改属性src的值,内容就会发生变化,这就是替换元素。
类似的有 、、、等等
所有的替换元素都是内联水平元素,inline 或者 inline-block 两种形式。这是浏览器厂商规定的。
尺寸计算
替换元素的尺寸从内到外分为三种
固有尺寸
就是指替换内容原本的尺寸
就是不加以任何修饰,声明一个 ,此时的尺寸就是固有尺寸
再比如 不加任何修饰 ,此时显示的图片尺寸就是固有尺寸,图片原本最真实的大小。
HTML尺寸
HTML尺寸是只能通过元素的原生属性来改变
比如 的width 和 height属性 。 的size属性。的cols 和 rows属性等等
CSS尺寸
css尺寸是通过css的 width 和 height 等设置的尺寸,作用的目标是 content box
规则如下:
优先级是 css尺寸> HTML尺寸 > 固有尺寸
如果固有尺寸含有固定的宽高比例,同时仅设置宽度或者高度,元素依然按照固有的宽高比例显示
比如 图片原本为400*300 ,比例为4:3 , 如果我们给与img这样设置
img{ width:200px}
那么最后图片的高为 200*3/4 = 150
内联替换元素和块级替换元素都使用上面同一套规则
img{width:200px; height:150px}
对于缺省src属性的img,IE和Chrome浏览器都还认定为替换元素,结果如预期宽高为 200*200. 但是火狐浏览器就把对于缺省src属性的img认定为 普通的内联元素,所以就不能使用上面的尺寸规则了。
但只要加上img{display:inline-block}就好了
我们是无法改变这个替换元素内容的固有尺寸的
看下下面的代码
.box::before {
content: url(image/1.jpg);
display: block;
width: 200px;
height: 200px;
object-fit: fill;
}
我们可能会认为图片最后会是200*200,可实际不是这样的。图片还是原来大小,css的样式改变的盒子的content box的宽高,改变不了图片的固有尺寸。
但如果我们使用替换元素img试看看
img {
width: 200px;
height: 200px;
/*object-fit: none;*/
background-color: #333;
}
效果如下
还是一样的200*200css样式,但是这次图片感觉被拉伸了,填满了整个盒子。其实,图片的固有尺寸还是没改变,只不过是因为图片中的content替换内容默认的适配方式是填充(fill)。css样式还是作用在盒子的大小。了解一下替换元素的一个属性object-fit,img的默认声明 object-fit:fill;
如果我们把object-fit设置为none
img {
width: 200px;
height: 200px;
object-fit: none;
background-color: #333;
}
结果和和非替换元素::before生成的图片类似
图片还是不受控制,仍然是原来的固有尺寸,盒子还是200*200
如果我们把object-fit设置为contain
img {
width: 200px;
height: 200px;
background-color: #333;
border: 1px solid #333;
object-fit: contain;
}
效果如下
这看起来是挺像的hhhh,其实是比例一样。因为如果值为contain,它的意思是保持图片的比例尽量去填充盒子容器,填不满也没事。
object-fit还有很多属性值,比如cover容器不留白,又保持原有比例。详情请看张老师的博客
替换与非替换元素
替换元素和替换元素之间只隔了一个src属性
下面代码在谷歌浏览器上进行,因为火狐只需把img的src去掉就变成了非替换元素,谷歌必须是去掉src+不为空alt值,才能变成非替换元素
.img3 {
display: block;
outline: 1px solid;
}
如果它是替换元素,则按照尺寸规则,它没有内容,则尺寸为默认大小,在谷歌浏览器下宽度为0 ,实际上如下
宽度为100%,woc,那就不符合替换元素的尺寸规则了,他就是一个非替换元素
伪元素的细节
js无法操作伪元素
替换元素也有伪元素,比如img使用伪元素,如果src成功,则引入的图片将会代替img的内部内容,这时伪元素就被代替了失效了。如果src失败,则伪元素还生效着。
伪元素是主元素的一部分
利用上面的细节可以做很多使用的demo
替换元素和非替换元素之间只隔了一个CSS content属性
替换元素之所以为替换元素,是因为他的content box这个盒子里面的内容是可替换的,所以content这个属性决定了是不是替换元素
.box {
margin-top: 20px;
width: 200px;
height: 200px;
display: block;
border: 1px solid #ffffff;
object-fit: cover;
}
.box:hover {
content: url(image/2.jpg);
}
实现了鼠标hover时图片切换
当我们用h1设计官网的标志时,可以这样用
我的世界
h1 {
width: 180px;
height: 36px;
content: url(image/myworld.jpg);
object-fit: contain;
}
效果如下:
object-fit也可以用了
读张鑫旭老师的css世界启发写的笔记!
java content()_理解content(一)相关推荐
- mmap java实现_理解java中的mmap
jdk中的MappedByteBuffer非常类似linux中的mmap将文件映射到虚拟内存,这样可以利用操作系统自带的虚拟内存实现来 提高io效率, 很多文档中提到这一点, 具体大家可以自行测试. ...
- 安卓 java内存碎片_理解Android Java垃圾回收机制
Jvm(Java虚拟机)内存模型 从Jvm内存模型中入手对于理解GC会有很大的帮助,不过这里只需要了解一个大概,说多了反而混淆视线. Jvm(Java虚拟机)主要管理两种类型内存:堆和非堆. 堆是运行 ...
- java 线程_理解java多线程
树枝头玩魔法班卓琴弦乐器的生物与发光的蝴蝶,数字艺术风格,插画绘画creature with java多线程 1.实现Runnable接口相比于继承Thread类: (1)适合多个相同的程序代码的线程 ...
- l bfgs算法java代码_理解L-BFGS算法
理解L-BFGS算法 Mar 30, 2015 #数值优化 #无约束最优化 L-BFGS(Limited-Memory BFGS)是BFGS算法在受限内存时的一种近似算法,而BFGS是数学优化中 ...
- Android异常总结---1.异常原因: java.lang.IllegalArgumentException: URI: content://com.android.contacts/con
1.异常原因: java.lang.IllegalArgumentException: URI: content://com.android.contacts/contacts1/data, call ...
- 项目销毁主页Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService异常
项目需求,项目退出登录的时候,跳转登录页面,重新登录,会重新进入首页.很简单的需求,只需在退出的时候将存储的用户信息销毁,把之前活跃的activity销毁,重新跳转进入登录界面即可.但是在真正执行退出 ...
- 解决java.lang.IllegalStateException: The content of the adapter has changed but ListView...的问题
我写了一个Dialog,Dialog中有一个ListView,想要点ListView中的一项后,跳转到另外一个Activity去. 但在使用时,会偶尔报出下面的错误: 02-21 14:54:28.9 ...
- 解决MediaPlayer: Couldn't open /storage/emulated:java.io.FileNotFoundException: No content provider问题
项目中用到了MediaPlayer播放本地视频文件的功能,遇到了一个很奇葩的问题,在4.0的设备上可以完美播放,但是在7.0的设备上死活播放不了,一直报如下错误 错误信息里出现了这几个字眼" ...
- android 字符串调用方法名,尝试在空对象引用上调用虚拟方法'java.lang.String android.content.Context.getPackageName()'...
在其中一个片段中,有一个RecyclerView带有自定义适配器,并且单击其中一个项目将转到另一个页面,该页面是相同Activity的新实例.但是,某些行为会在我的应用程序中导致错误. 从我的活动中, ...
最新文章
- 时间和邮箱的正则表达式,获取当前时间函数
- Ocelot中文文档-缓存
- 聊聊asp.net中Web Api的使用
- 作为一名程序员,谁没跳过槽,“6”招让你“空降”大厂
- ASP.NET Core知多少(7):对重复编译说NO -- dotnet watch
- 使用GDAL的MEM内存文件保存临时文件
- 云计算对IT产业的影响
- MVC自定义路由的配置,必须把自己的路由写在前面
- Ubuntu更新Chrome到最新的版本
- 2019校招开发岗面试题总结(Java后台开发)
- 虚拟光驱 安装深度linux,手把手教你如何用虚拟光驱安装深度WIN7
- js中的splice方法使用,删除数组中的最大最小值
- Mac添加Windows共享打印机
- 服装计算机辅助设计学什么,【计算机应用论文】服装设计的计算机辅助设计应用分析(共3905字)...
- Hive数据分析案例
- CF888G - Xor-MST(顺带学习Borůvka算法)
- 两台电脑如何共享文件?如何互相传输文件?
- JAVASE基础模块三十四( 菜鸡版简单登录验证模块系统IO流文件写入)
- jeesite 之上传图片
- matlab语言帮助系统题目,西电 matlab语言考试题2009年