从零开始的前端生活-理解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(一)相关推荐

  1. mmap java实现_理解java中的mmap

    jdk中的MappedByteBuffer非常类似linux中的mmap将文件映射到虚拟内存,这样可以利用操作系统自带的虚拟内存实现来 提高io效率, 很多文档中提到这一点, 具体大家可以自行测试. ...

  2. 安卓 java内存碎片_理解Android Java垃圾回收机制

    Jvm(Java虚拟机)内存模型 从Jvm内存模型中入手对于理解GC会有很大的帮助,不过这里只需要了解一个大概,说多了反而混淆视线. Jvm(Java虚拟机)主要管理两种类型内存:堆和非堆. 堆是运行 ...

  3. java 线程_理解java多线程

    树枝头玩魔法班卓琴弦乐器的生物与发光的蝴蝶,数字艺术风格,插画绘画creature with java多线程 1.实现Runnable接口相比于继承Thread类: (1)适合多个相同的程序代码的线程 ...

  4. l bfgs算法java代码_理解L-BFGS算法

    理解L-BFGS算法 Mar 30, 2015   #数值优化  #无约束最优化 L-BFGS(Limited-Memory BFGS)是BFGS算法在受限内存时的一种近似算法,而BFGS是数学优化中 ...

  5. Android异常总结---1.异常原因: java.lang.IllegalArgumentException: URI: content://com.android.contacts/con

    1.异常原因: java.lang.IllegalArgumentException: URI: content://com.android.contacts/contacts1/data, call ...

  6. 项目销毁主页Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService异常

    项目需求,项目退出登录的时候,跳转登录页面,重新登录,会重新进入首页.很简单的需求,只需在退出的时候将存储的用户信息销毁,把之前活跃的activity销毁,重新跳转进入登录界面即可.但是在真正执行退出 ...

  7. 解决java.lang.IllegalStateException: The content of the adapter has changed but ListView...的问题

    我写了一个Dialog,Dialog中有一个ListView,想要点ListView中的一项后,跳转到另外一个Activity去. 但在使用时,会偶尔报出下面的错误: 02-21 14:54:28.9 ...

  8. 解决MediaPlayer: Couldn't open /storage/emulated:java.io.FileNotFoundException: No content provider问题

    项目中用到了MediaPlayer播放本地视频文件的功能,遇到了一个很奇葩的问题,在4.0的设备上可以完美播放,但是在7.0的设备上死活播放不了,一直报如下错误 错误信息里出现了这几个字眼" ...

  9. android 字符串调用方法名,尝试在空对象引用上调用虚拟方法'java.lang.String android.content.Context.getPackageName()'...

    在其中一个片段中,有一个RecyclerView带有自定义适配器,并且单击其中一个项目将转到另一个页面,该页面是相同Activity的新实例.但是,某些行为会在我的应用程序中导致错误. 从我的活动中, ...

最新文章

  1. 时间和邮箱的正则表达式,获取当前时间函数
  2. Ocelot中文文档-缓存
  3. 聊聊asp.net中Web Api的使用
  4. 作为一名程序员,谁没跳过槽,“6”招让你“空降”大厂
  5. ASP.NET Core知多少(7):对重复编译说NO -- dotnet watch
  6. 使用GDAL的MEM内存文件保存临时文件
  7. 云计算对IT产业的影响
  8. MVC自定义路由的配置,必须把自己的路由写在前面
  9. Ubuntu更新Chrome到最新的版本
  10. 2019校招开发岗面试题总结(Java后台开发)
  11. 虚拟光驱 安装深度linux,手把手教你如何用虚拟光驱安装深度WIN7
  12. js中的splice方法使用,删除数组中的最大最小值
  13. Mac添加Windows共享打印机
  14. 服装计算机辅助设计学什么,【计算机应用论文】服装设计的计算机辅助设计应用分析(共3905字)...
  15. Hive数据分析案例
  16. CF888G - Xor-MST(顺带学习Borůvka算法)
  17. 两台电脑如何共享文件?如何互相传输文件?
  18. JAVASE基础模块三十四( 菜鸡版简单登录验证模块系统IO流文件写入)
  19. jeesite 之上传图片
  20. matlab语言帮助系统题目,西电 matlab语言考试题2009年

热门文章

  1. 八月十二日,周二总结
  2. Oracle之物化视图
  3. Testing tools
  4. 用Debug函数实现API函数的跟踪
  5. 基于SSM实现在线聊天系统
  6. 模型可解释性-树结构可视化
  7. 吴恩达机器学习笔记55-异常检测算法的特征选择(Choosing What Features to Use of Anomaly Detection)
  8. Xpath语法-爬虫(一)
  9. Linux学习笔记:touch新建文件、修改访问、改动时间
  10. Oracle 内置函数