css

249 阅读4分钟

常见的行内元素、块级元素、行内块元素都有哪些

1, 块级元素

  • 独占一行,其宽度自动填满其父元素宽度(即使设置了宽度仍然是独占一行的)
  • 多个块状元素标签写在一起,默认排列方式为从上至下
  • 高度,行高,外边距(margin)以及内边距(padding)都可以控制
  • div h1-h6 p ul ol li nav aside header footer section article address form table
  1. 行内元素
  • 不会独占一行,相邻的行内元素会排列在同一行里,直到一行排不下才会自动换行,其宽度随元素的内容而变化
  • 设置行高有效,等同于给父级元素设置行高
  • 高宽无效,对外边距(margin)和内边距(padding)仅设置左右方向有效上下无效。
  • 内边距(padding)设置上下从显示效果是增加的,但其实设置时无效的,并不会影响周围的元素
  • 行内元素中不能放块级元素,a 链接里面不能再放链接
  • span a label i b strong em del(删除线) ins(下划线) sub(下标) sup(上标)
  1. 行内块元素
  • 高度、行高、外边距以及内边距都可以控制。
  • 默认宽度就是它本身内容的宽度,不独占一行,但是之间会有空白缝隙,设置它上一级的font-size为0,才会消除间隙
  • button input textarea select img
  1. 三者是可以进行转换的
  • 转换为行内元素 display: inline;
  • 转换为块状元素 display: block;
  • 转换为行内块状元素 display:inline-block;

请说明px,em,rem,vw,vh,rpx等单位的特性

px

px也就是像素,是最迷惑我的单位,第一印象它是绝对长度,是定死的,所以想要响应式布局和自适应布局不要用它

em、rem rem相对于根元素的大小来设置的;

em是相对于父元素的大小来设置的

rpx、vw、vh rpx是微信小程序为了解决自适应屏幕尺寸设计的单位,它规定任何屏幕的宽都是750rpx

常见的替换元素和非替换元素

  • 替换对象 若标签的属性可以改变标签的显示方式就是替换元素,比如input的type属性不同会有不同的展现,img的src等

img、input、iframe

  • 非替换对象 div、span、p

first-of-type和first-child有什么区别

first-of-type:这个类型的第一个元素

first-child:该元素是第一个元素且是这个类型,否则匹配不到

doctype标签和meta标签

  1. doctype
  • 告诉浏览器本页面是用什么标记语言书写,是什么文档类型

  • 不同的文档类型,标签适用范围不一致

  • 这个放在文档的开头代表

浏览器以w3c的标准解析和渲染页面

浏览器解析页面有两种模式,一种按照浏览器自己的方式解析,叫做怪异模式,另一种采用w3c的标准解析页面,这个叫做标准模式

如果不写这个生命,各个浏览器就会以自己的方式解析,采用怪异模式,在不同浏览器下有不同的表现,有了这个声明,就按照这个标准模式解析,所有浏览器保持一致

看了这个声明,就知道他是一个h5页面,h5新增的特性就可以使用

  1. meta标签,元信息标签 Charset=”utf-8” 字体编码,国际的编码是utf-8(浏览器的解析标准) Name=”viewport” 叫视口 content就是对这个视口的具体操作 width=device-width 视口宽等于设备宽

script标签中defer和async都表示了什么

  1. defer 不会阻止页面解析,并行下载对应的js文件

下载完之后不会执行

等所有其他脚本加载完之后,在DOMContentLoaded事件之前执行对应d.js、e.js

  1. async 不会阻止DOM解析,并行下载对应的js文件

下载完之后立即执行

什么是BFC

  • BFC是一个独立渲染区域,它丝毫不会影响到外部元素
  • BFC特性 同一个BFC下margin会重叠

计算BFC高度时会算上浮动元素

BFC不会影响到外部元素

BFC内部元素是垂直排列的

BFC区域不会与float元素重叠

  • 如何创建BFC position设为absolute或者fixed

float不为none

overflow设置为hidden

display设置为inline-block或者inline-table或flex

如何清除浮动

  • 额外标签clear:both
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
    .fahter{
        width: 400px;
        border: 1px solid deeppink;
    }
    .big{
        width: 200px;
        height: 200px;
        background: darkorange;
        float: left;
    }
    .small{
        width: 120px;
        height: 120px;
        background: darkmagenta;
        float: left;
    }

    .clear{
        clear:both;
    }
    </style>
</head>
<body>
    <div class="fahter">
        <div class="big">big</div>
        <div class="small">small</div>
        <div class="clear">额外标签法</div>
    </div>
</body>
  • 利用BFC
.fahter{
        width: 400px;
        border: 1px solid deeppink;
        overflow: hidden;
    }
  • 使用after(推荐)
<style>
    .clearfix:after{/*伪元素是行内元素 正常浏览器清除浮动方法*/
        content: "";
        display: block;
        height: 0;
        clear:both;
        visibility: hidden;
    }
    .clearfix{
        *zoom: 1;/*ie6清除浮动的方式 *号只有IE6-IE7执行,其他浏览器不执行*/
    }
</style>
<body>
    <div class="fahter clearfix">
        <div class="big">big</div>
        <div class="small">small</div>
        <!--<div class="clear">额外标签法</div>-->
    </div>

什么是DOM事件流?什么是事件委托

  1. DOM事件流 分为3个阶段 捕获,目标,冒泡

addEventListener()的第三个参数(useCapture)设置为true,则会在捕获阶段运行,默认是false冒泡

  1. 事件委托 利用的是冒泡阶段,将事件绑定到父元素上,以实现事件委托