替换元素、非替换元素与content

本文深入探讨CSS中的content属性,介绍其在不同浏览器中的表现,并通过实例展示如何利用content属性实现图片替换等动态效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

巧妙利用content

在 Chrome 器下,所有的都持 content属性,而其他器仅在::before/::after 中才有效。
利用content实现动态效果。


	<style type="text/css">
		/*如果图片原来是有src地的,我们也是可以使用content属性把 图片内容给换的,于是,我们就能实现hover图片成另外一图片的效果*/
		.emoji:hover {
		    content: url(laugh-tear.png);
		}	
		</style>

<body>
	
	<img class="emoji" src="laugh.png">
</body>

实现效果:
鼠标经过前:
在这里插入图片描述
鼠标经过时:
在这里插入图片描述

content与替换元素:

替换元素之所以为替换,就是因为其内容可替换,而这个内容就是 margin、border、 padding 和 content 这 4 个子中的 content box,对应的 CSS 属性是 content,所以,从 理论层面讲,content 属性定了是替换还是非替换。
理论太虚,我们还是看一些有趣的真实例。在开始之前,我们需要感 Chrome 器,Chrome 器的表现帮助我们更好地理解了替换。什么表现呢?就是在 Chrome 器下,所有的都持 content属性,而其他器仅在::before/::after 中才有持。因此,下面的所有例,请在 Chrome、Safari、Opera 等器下查看。
前面已经证明了,没有src属性的是非替换元素,但是,如果我们此时使用content 属性给生成一图片呢?
使用content 属性给生成一图片:

<style type="text/css">
div>img:first-child:not(src){

			content:url(1.jpg);
		}
		div>img{
			width: 200px;
			height: 150px;
		}
</style>

<body>
<img>
<img src="1.jpg">
</body>

效果:
在这里插入图片描述
第一张是利用content属性生成的图片,第二张是正常img。

所以到底替换元素是什么?与非替换元素有什么区别?分别有什么联系及如何利用它们之间与content的关系?

  • 非替换元素:(X)HTML 的大多数元素是非替换元素,他们将内容直接告诉浏览器,将其显示出来。且元素一般拥有固定的尺寸(宽高或宽高比)。html中像这样的元素有img, input, textarea, select, object,这些都是替换元素,这些元素都没有实际的内容。
  • 替换元素就是浏览器根据元素的标签属性,来决定元素的具体显示内容。就像img元素通过src属性的值来读取图片信息并显示出来,而如果查看(x)html代码,却看不到图片的实际内容。重点是属性与标签,有许多选择像<input type="">type可以是button或text等等,不像<p>、<div>、<strong>等等,直接将内容告诉浏览器。
  • 关于与content的关系,非替换元素通过用content使内容可以替换,可以说成是非替换元素变成了替换元素。就像h1 { content: url(logo.png); }
### 使用 jQuery 替换 HTML 元素 在 jQuery 中,可以通过多种方法实现替换 HTML 元素的功能。以下是几种常见的方法及其示例: #### 方法一:`replaceWith()` 函数 `replaceWith()` 是一种简单而强大的函数,用于将指定的选择器匹配到的元素替换成新的内容或 DOM 节点。 ```javascript $(document).ready(function() { $('#id').replaceWith('<div>I have been replaced</div>'); // 将 id="id" 的元素替换为新内容 }); ``` 此代码片段展示了如何通过 `replaceWith()` 来替换具有特定 ID 的元素[^1]。 --- #### 方法二:`html()` 函数 如果目标是仅更改某个元素的内容而不删除整个节点,则可以使用 `html()` 函数来设置内部 HTML 内容。 ```javascript $('#id').html('<p>New Content Inside This Element</p>'); ``` 这段代码会保留原始元素结构并更新其子级内容[^3]。 需要注意的是,当调用无参数版本时,`html()` 返回第一个匹配项内的现有 HTML 字符串;带参数形式则覆盖这些内容。 --- #### 方法三:动态创建插入 有时可能需要先构建复杂的 DOM 片段再执行替换操作,在这种情况下可利用 `$()` 构造器配合 `.replaceAll()` 或其他链式命令完成任务。 ```javascript var newElement = $('<span>', { text: 'New Span', class: 'highlight' }); newElement.replaceAll('#existingId'); // 把 #existingId 完全移除并代之以 newElement ``` 这里我们手动制造了一个 `<span>` 并赋予属性之后将其部署至页面相应位置替代旧对象. --- #### 关于全局评估脚本 (`globalEval`) 尽管不常见作为常规手段去修改单一标签,但了解下述技巧也可能有所帮助: ```javascript jQuery.globalEval("alert('This is evaluated globally');"); // 可能结合某些场景间接影响文档流比如加载外部资源后立即生效等特殊需求. ``` 不过这通常涉及更高层次的应用逻辑而单纯元素置换[^2]. --- ### 总结 综上所述,针对不同情况可以选择合适的 API 实现所需效果——无论是简单的字符串注入还是复杂组件重构皆可通过上述途径达成目的.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值