HTML中的置换元素(替换元素)和非置换元素(不可替换元素)

本文介绍了HTML中置换元素的概念及其特点,包括img、input等常见置换元素的固有尺寸及如何通过CSS控制其显示。

什么是置换元素

“置换元素”又叫做“替换元素”,
它们所具有的特征为:在不使用css修饰时,元素的标签和属性也会影响元素的显示。

  • 比如<img> 标签,浏览器会根据src属性读取图片并显示,且图片大小会影响<img>标签大小。
  • 再比如,input标签的type属性会影响input的显示是输入还是选择。

最后,我们对置换元素有一个专业定义:
一个内容不受CSS视觉格式化模型控制,CSS渲染模型并不考虑对此内容的渲染,且元素本身一般拥有固有尺寸(宽度,高度,宽高比)的元素,被称之为置换元素。

常见的置换元素

img
input
textarea
select
object
iframe
canvas

那么,除此之外的其他HTML元素就是非置换元素。

置换元素的特点

这里写图片描述
置换元素做为特殊的内联元素,特殊之处就在于可以设置宽度高度,接下来我们就对宽度和高度特点进行总结。(提起精神,因为可能比较难理解……)

宽度

  • 若宽度的值为 auto 且元素有固有宽度,则 width 的使用值为该固有宽度。

    典型的例子是:拥有默认宽高的 input 当宽度的计算值为auto时,则宽度使用值为其默认的固有宽度

  • 若宽度的值为 auto 且高度有 非auto 的计算值,并且元素有固有宽高比,则 width 的使用值为 高度使用值 * 固有宽高比。

    典型的例子:img 当只定义了其高度值时,其宽度将会根据固有宽高比进行等比设置

  • 当 width 的值为 auto 时,则宽度的使用值为 300px。

    典型的例子:比如iframe, canvas

高度

  • 若高度的值为 auto 且元素有固有高度,则 height 的使用值为该固有高度;

    典型的例子:img标签内图片有固有高度

  • 若高度的值为 auto 且宽度有 非auto 的值,并且元素有固有宽高比,则 height 的使用值为:宽度使用值 / 固有宽高比;

  • 若高度的值为 auto 且上述条件完全不符,则 height 的使用值 不能大于150px,且宽度不能大于长方形高度的2倍。

(后两个没有找到例子,如果大家有例子可以补充上来,谢谢。)

### 使用 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 实现所需效果——无论是简单的字符串注入还是复杂组件重构皆可通过上述途径达成目的.
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值