一个来自面试的坑。

面试的时候考官先问了行内元素和块级元素的区别,这个不难理解。然后一脚就踩进了,置换元素的坑。例如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>

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

  1. [CSS]置换和非置换元素

    转自:http://blog.doyoe.com 先进一个题外话 在面试一个 重构(各大公司的叫法可能不太一样)时,我喜欢从一个点开始问,然后一直延展下去成为一条线,甚至是一个面,直到问到不会的地方, ...

  2. CSS置换元素和非置换元素

    置换元素: 1. 一个内容 不受CSS视觉格式化模型控制,CSS渲染模型并不考虑对此内容的渲染,且元素本身一般拥有固有尺寸(宽度,高度,宽高比)的元素,被称之为置换元素.  2. 置换元素就是浏览器根 ...

  3. HTML中的置换元素和非置换元素

    我们都知道,行内元素不能够定义宽度和高度,但 img,input,button等标签作为行内元素却可以定义宽高,为什么呢?这就牵扯到了置换元素和非置换元素. 置换元素: w3c官方解释:“An ele ...

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

    html元素也可以分为替换元素和非替换元素 1.替换元素 替换元素是由浏览器根据表示的元素和属性决定显示的内容. 例如:<img src="./image.jpg" /> ...

  5. css继承属性与非继承属性

    一.无继承性的属性 1.display:规定元素应该生成的框的类型 2.文本属性: vertical-align:垂直文本对齐 text-decoration:规定添加到文本的装饰 text-shad ...

  6. Ionic3,关于配置公共的css文件,引用非标准的文件(三)

    说明 在开发过程中,很多样式为了能够共用,这样能够节省很大一部分时间用来编写样式,同时,一个完整的共用模板,在进行样式更换的时候,可以达到事半功倍的效果,因此在开发效率上也可以获得提高. 相关步骤: ...

  7. 【HTML/CSS】置换元素

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

  8. 5:CSS元素类型

    5:CSS元素类型 学习目标 1.元素类型分类依据和元素类型分类 2.元素类型的转换 3.inline-block元素类型的应用 4.置换和非置换元素的概念和应用案例 一.元素类型分类依据和元素类型分 ...

  9. 好程序员web前端分享CSS元素类型

    好程序员web前端分享CSS元素类型 目标 1.元素类型分类依据和元素类型分类 2.元素类型的转换 3.inline-block元素类型的应用 4.置换和非置换元素的概念和应用案例 一.元素类型分类依 ...

随机推荐

  1. 使用jQuery实现Socket客户端

    摘于抄书web前端开发 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> & ...

  2. Vue+elementui 实现复杂表头和动态增加列的二维表格

    先上完成的效果图:列是根据查询结果增加的 数据格式: 表头的数据取出: data.data.forEach(element => { this.thead.push({ 品名: element. ...

  3. 微信小程序的短信接口

    使用聚合数据 (网址)  https://www.juhe.cn/docs? 注册部分略! 这是登录部分的. 一: 二.我的接口

  4. MySQL 简介

    MySQL 简介 点击查看MySQL官方网站 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,后来被Sun公司收购,Sun公司后来又被Oracle公司收购,目前属于Oracle旗 ...

  5. Python + logging输出到屏幕,将log日志写入到文件

    logging提供了一组便利的函数,用来做简单的日志.它们是 debug(). info(). warning(). error() 和 critical(). logging函数根据它们用来跟踪的事 ...

  6. CentOS 7系统安装nginx+php

    安装介绍1.系统环境CentOS7 2.nginx版本1.12 3.PHP版本7.2 下载地址 4.MySQL版本5.7 安装nginx添加centos7的 nginx yum源 然后执行安装 sud ...

  7. amqp 抓包 不要在同一台机器

  8. Linux 部署或升级openssh7.5p1

    运维Linux系统,部署或升级openssh是经常面临的事,以下已redhat6和redhat7为例. 在redhat6中部署openssh会有什么坑,在编辑openssh源码包时会报一些类似的错误, ...

  9. [python 学习] logging模块

    1.将简单日志打印到屏幕: import logging logging.debug('debug message') logging.info('info message') logging.war ...

  10. java.util.Date 与 java.sql.Date 相关知识点解析

    问:java.sql.Date 和 java.util.Date 有什么区别?   答:这两个类的区别是 java.sql.Date是针对 SQL 语句使用的,它只包含日期而没有时间部分,一般在读写数 ...