CSS的置换和非置换元素

一个来自面试的坑。

面试的时候考官先问了行内元素和块级元素的区别,这个不难理解。然后一脚就踩进了,置换元素的坑。例如img就是行内置换元素,这种行内元素是可以设置宽高的。

什么是置换元素

一个内容不受CSS视觉格式化模型控制,CSS渲染模型并不考虑对此内容的渲染,而且元素本身一般拥有固定的尺寸(宽度、高度、宽高比)的元素。

行内级置换元素的宽度

对于行内级非置换元素,高度和宽度设置是不适用,垂直方向上的margin、padding设置也没有用。、

对于行内级置换元素,宽度:

  • 如果宽高或者宽的值为auto,且元素有固有的宽度,则width是此固有的宽度:
  • 如果宽度设置为auto,但是高度有非auto的值,且元素有固定的宽高比: width = 高度 * 固定宽高比。
    • 如img只设定了height,宽度会按比例计算
  • 如果宽度设置为auto,且不符合上述条件,则宽度的使用值为300px。
    • 如:iframe,canvas

行内级置换元素的高度

对于行内级非置换元素,高度和宽度设置是不适用,垂直方向上的margin、padding设置也没有用。、

对于行内级置换元素,高度:

  • 如果宽高或者高的值为auto,且元素有固有的高度,则height是此固有的宽度
  • 如果高度设置为auto,但是宽度有非auto的值,且元素有固定的宽高比: height = 宽度 / 固定宽高比。
  • 如果高度设置成auto,且不符合上述条件,则height的值不能大于150px,且宽度不能大于高度的2倍。

常见的行内置换元素

<img> <input> <textarea> <select> <object>

原文地址:https://www.cnblogs.com/ninalei/p/8685159.html

时间: 2024-11-03 23:29:50

CSS的置换和非置换元素的相关文章

[CSS]置换和非置换元素

转自:http://blog.doyoe.com 先进一个题外话 在面试一个 重构(各大公司的叫法可能不太一样)时,我喜欢从一个点开始问,然后一直延展下去成为一条线,甚至是一个面,直到问到不会的地方,然后又换另外一个点. 例如:我可能会说,能简单聊聊 行内级元素 和 块级元素 的区别吗. 一般这时,候选人都会说到 行内级元素 不会换新行,而 块级元素 会格式化为块状,即换行.但也有些遗憾的方面(如:混淆了块元素和块级元素,行内元素和行内级元素),当然这看起来似乎不是特别重要. 这时我会继续问,行

置换元素与非置换元素

1.置换元素 浏览器根据元素的标签和属性,来决定元素的具体显示内容. 例如:浏览器会根据 <img>标签的src属性的值来读取图片信息并显示出来, 而如果查看(x)html代码,则看不到图片的实际内容: <input>标签的type属性来决定是显示输入框,还是单选按钮等. (x)html中的<img><input><textarea><select>都是置换元素. 这些元素往往没实际的内容,即是一个空元素. 置换元素在其显示中生成了框

什么是置换元素和非置换元素?

置换元素 置换元素是指:浏览器根据元素的标签和属性,来决定元素的具体显示内容. 例如:浏览器根据<img>标签的src属性显示图片.根据标签的type属性决定显示输入框还是按钮. 置换元素在其显示中生成了框,这也就是有的内联元素能够设置宽高的原因. html中的<img><input><textarea><select><object>都是置换元素,这些置换元素往往没有实际内容,即是一个空元素. 非置换元素 浏览器中的大多数元素都是不

CSS 替换元素和非替换元素 行内非替换元素

html元素也可以分为替换元素和非替换元素 1.替换元素 替换元素是由浏览器根据表示的元素和属性决定显示的内容. 例如:<img src="./image.jpg" />他由标签元素img和属性src来决定显示的内容. <input type="text" />如果text换成其他的属性值,input会显示不同的样子,这也是有input和type属性值决定显示内容的. 像<img>.<input>.<textar

css之float之非完全脱离文档流

非完全脱离文档流  左右结构div盒子重叠现象,一般是由于相邻两个DIV一个使用浮动一个没有使用浮动.一个使用浮动一个没有导致DIV不是在同个"平面"上,但内容不会造成覆盖现象,只有DIV形成覆盖现象. <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <s

Css继承属性和非继承属性

一.无继承性的属性 1.display:规定元素应该生成的框的类型 2.文本属性: vertical-align:垂直文本对齐 text-decoration:规定添加到文本的装饰 text-shadow:文本阴影效果 white-space:空白符的处理 unicode-bidi:设置文本的方向 3.盒子模型的属性:width.height.margin .margin-top.margin-right.margin-bottom.margin-left.border.border-style

【HTML/CSS】置换元素

置换元素: 一个内容不受CSS视觉格式化模型控制,CSS渲染模型并不考虑对此内容的渲染,且元素本身一般拥有固有尺寸(宽度,高度,宽高比)的元素,被称之为置换元素. 行内级置换和非置换元素的宽度定义 对于行内级非置换元素,宽度设置是不适用的. 对于行内级置换元素来说,其宽度的设置需遵循以下几点: 若宽高的计算值都为 auto 且元素有固有宽度,则 width 的使用值为该固有宽度: 典型的例子是:拥有默认宽高的 input 当宽度的计算值为auto时,则宽度使用值为其默认的固有宽度 若宽度的计算值

CSS2.1SPEC:视觉格式化模型之包含块

原汁原味的才是最有味道的,在阅读CSS标准时对这一点的体会更加深刻了,阅读文档后的一大感觉就是很多看上去理所应当的样式表现也都有了对应的支持机制.本文首先从包含块写起,一方面总结标准中相应的阐述,并且结合具体的实例进行具体分析,特别是对于CSS2.1支持并不完善的IE6/7.由于经验尚浅,文中肯定存在一些问题,希望大家可以多多包涵并且指出问题. 阅读本文前,应当对于CSS盒模型以及视觉格式化模型中会产生的各种框(box,也可以成为盒子)以及各种不同的布局方式有比较准确的认识,可以阅读杜瑶大神的两

CSS非ASCII字符最佳实践

作者:zhanhailiang 日期:2014-10-30 问题场景 在写样式时经常需要用到非ASCII字符的属性值,如下: .hot_list .sign_discount:before { content: "满减"; padding: 0 8px; margin-right: 7px; font-size: 12px; line-height: 14px; color: #fff; text-align: center; background-color: #f13993; bo