HTML&CSS面试题总结

目录

HTML&C

一、盒模型

二.BFC

三、清除浮动

四、position定位的属性方法

1. position: static;

2. position: relative;

3. position: absolute;

4. position: fixed;

5. inherit

6. sticky (黏性定位,吸顶效果)

五 、盒子水平垂直居中

六、两栏布局、三栏(圣杯、双飞翼)

作用:

圣杯布局:

优缺点:

双飞翼布局:

优缺点:

圣杯与双飞翼的区别

七、Flex 布局

八、行内元素.块级元素. 空(void)元素

九、CSS Hack

什么是CSS Hack?

方法一:IE条件注释法

方法二.选择符前缀法

方法三.样式属性前缀法

十、src与href的区别

十一、link和@import的区别

十二、H5和C3新特性

1.选择器

2. 背景和边框

背景:

边框:

3. 文本效果

4. 2D/3D 转换

H5 新特性

1. h5新增特性:

2. 语义化标签

3. 表单类型增强

4. html5 新增的表单属性

5. html5 新事件

十三、前端常见浏览器兼容性问题解决方案

前言:



HTML&C

一、盒模型

在我们HTML页面中,每一个元素都可以被看作一个盒子,而这个盒子由:内容区(content)、填充区(padding)、边框区(border)、外边界区(margin)四部分组成

###

标准盒模型 (非IE浏览器)

box-sizing:content-box;一个块的总宽度(页面中占的宽度)= width + margin(左右) + padding(左右) + border(左右)

怪异盒模型 (IE浏览器)

box-sizing:border-box;一个块的总宽度= width + margin(左右)(即width已经包含了padding和border值)

怎么获取和设置box的内容宽高

IE: dom.currentStyle.width/height

非IE: window.getComputedStyle(dom).width/height

var obj = document.getElementById("box");
 
var style = null;
if (window.getComputedStyle) {
    style = window.getComputedStyle(obj, null);    // 非IE
} else { 
    style = obj.currentStyle;  // IE
}
alert("width=" + style.width + "\nheight=" + style.height);

二.BFC

什么是BFC

BFC就是“块级格式化上下文”的意思,BFC是一块独立的布局环境,保护其中内部元素不收外部影响,也不影响外部。本身BFC是一种css的布局方式,只是我们可以利用它来解决外边距折叠的问题,BFC并不是专门用来解决这个问题而创的;

如何触发BFC

overflow: auto/ hidden;
 
position: absolute/ fixed;
 
float: left/ right;
 
display: inline-block/ table-cell/ table-caption/ flex/ inline-flex

BFC的应用

1 可以用来自适应布局

利用BFC的这个原理可以实现两栏布局,左边定宽,右边自适应。不会相互影响,哪怕高度不相等。

给左边盒子加浮动,右边盒子加overflow:hidden;变成BFC,就可以消除外部左边盒子因浮动对他的影响

2 可以清除浮动

一个父元素中的子元素,设置浮动时,父元素没有设置高度,这时子元素脱离文档流,父元素感知不到子元素的高度,造成父元素的塌陷。 这时候给父元素添加overflow:hidden / auto,变成BFC就可以解决这种问题。

3 解决垂直边距重叠

三、清除浮动

为什么要清除浮动

清除浮动主要是为了解决,父元素因为子级元素浮动引起的内部高度为0的问题

清除浮动

一、 额外标签法: 给谁清除浮动,就在其后额外添加一个空白标签的方法

<div class="fahter">
        <div class="big">big</div>
        <div class="small">small</div>
        <div class="clear">额外标签法</div>
</div>
 
 
.clear{
        clear:both;
    }

二、 父级添加overflow方法:

.fahter{
    width: 400px;
    border: 1px solid deeppink;
    overflow: hidden;
}

三、使用after伪元素清除浮动:

<body>
    <div class="father clearfix">
        <div class="big">big</div>
        <div class="small">small</div>
        <!--<div class="clear">额外标签法</div>-->
    </div>
    
</body>
 
 
 
.clearfix:after{
        content: "";
        display: block;
        height: 0;
        clear:both;
    }
    .clearfix{
        *zoom: 1;/*ie6清除浮动的方式 *号只有IE6-IE7执行,其他浏览器不执行*/
    }

四、使用before和after双伪元素清除浮动:用法同上

四、position定位的属性方法

position含义是指定位类型, 可取值有: static, relative, absolute, fixed, inherit, sticky(另: sticky是除css3新发布的属性)

1. position: static;

static(没定位)是position的默认值, 元素处于正常的文档流中, 会忽略left, top, right, bottom, z-index属性.

2. position: relative;

relative(相对定位)是给元素设置相对原本位置的定位, 不脱离文档流, 此元素原本位置会保留, 其他元素不会受影响.

3. position: absolute;

absolute(绝对定位)指给元素设置绝对定位,相对定位的对象可以分为两种情况:

  • 设置了absolute的元素如果存在有祖先元素设置了position属性为relative或者absolute,则这时元素的定位对象为此已设置position属性的祖先元素。

  • 如果并没有设置了position属性的祖先元素,则此时相对于body进行定位。

4. position: fixed;

可以简单说fixed是特殊版的absolute,fixed元素总是相对于body定位的。

5. inherit

继承父元素的position属性,但需要注意的是IE8以及往前的版本都不支持inherit属性。

6. sticky (黏性定位,吸顶效果)

设置了sticky的元素,在屏幕范围(viewport)时该元素的位置并不受到定位影响(设置是top、left等属性无效),当该元素的位置将要移出偏移范围时,定位又会变成fixed,根据设置的left、top等属性成固定位置的效果。

五 、盒子水平垂直居中

第一种:盒子宽高 + margin

思路 :上外边距为自身高度一半,左外边距为自身宽度一半:

.box {
            width: 800px;
            height: 400px;
            border: 1px solid black;
        }
        
        .son {
            width: 400px;
            height: 200px;
            margin-top: 100px;    /* 上外边距为自身高度一半 */
            margin-left: 200px;    /* 左外边距为自身宽度一半 */
            border: 1px solid red;
        }

第二种:盒子高度 + margin

  • 思路:让子盒子距离顶部外边距为自己高度的一半,左右auto

.box {
            width: 800px;
            height: 400px;
            border: 1px solid black;
        }
        
        .son {
            width: 400px;
            height: 200px;
            /* 让子盒子距离顶部外边距为自己高度的一半,左右auto */
            margin: 100px auto;
            border: 1px solid red;
        }

第三种:盒子宽高 + 定位 + margin

  • 思路 1 :给父盒子加相对定位,给子盒子加绝对定位,再设置子盒子相对于父盒子的边偏移:top:50%,left:50%;然后设置左外边距为自身宽度一半,上外边距为自身高度一半

.box {
            position: relative;
            width: 800px;
            height: 400px;
            border: 1px solid black;
        }
        
        .son {
            position: absolute;
            width: 400px;
            height: 200px;
            top: 50%;
            left: 50%;
            margin-top: -100px;
            margin-left: -200px;
            border: 1px solid red;
        }

  • 思路 2 :将子盒子边偏移全部设置成0,然后使用margin:auto

.box {
            position: relative;
            width: 800px;
            height: 400px;
            border: 1px solid black;
        }
        
        .son {
            position: absolute;
            width: 400px;
            height: 200px;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            margin: auto;
            border: 1px solid red;
        }

第四种:定位 + Transform

  • 思路:设置子盒子边偏移 top:50%,left:50%,再用CSS3属性transform: translate(-50%, -50%);

 .box {
            position: relative;
            width: 800px;
            height: 400px;
            border: 1px solid black;
        }
        
        .son {
            position: absolute;
            width: 400px;
            height: 200px;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            border: 1px solid red;
        }

第五种:Felx

  • 思路:

    1. justify-content:center;设置flex盒子中的项目在主轴上居中对齐

    2. align-items:center;设置flex盒子中的项目在侧轴和主轴上居中对齐

    3. 主轴和侧轴都居中了,盒子也就水平垂直居中了

.box {
            display: flex;
            justify-content: center;    /* 设置flex盒子中的项目在主轴上居中对齐 */
            align-items: center;   /*  设置flex盒子中的项目在侧轴和主轴上居中对齐 */
            width: 800px;
            height: 400px;
            border: 1px solid black;
        }
        
        .son {
            width: 400px;
            height: 200px;
            border: 1px solid red;
        }

六、两栏布局、三栏(圣杯、双飞翼)

作用:

圣杯布局和双飞翼布局解决的问题是相同的,就是两边顶宽,中间自适应的三栏布局,中间栏要在放在文档流前面以优先渲染。

圣杯布局:

为了让中间div内容不被遮挡,将中间div设置了左右padding-left和padding-right后,将左右两个div用相对布局position: relative并分别配合right和left属性,以便左右两栏div移动后不遮挡中间div。

优缺点:

不需要添加dom节点

缺点:如果将浏览器无线放大时,「圣杯」将会「破碎」掉。当middle部分的宽小于left部分时就会发生布局混乱。(middle<left即会变形)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
           #bd{
                padding: 0 200px 0 180px;
                height: 100px;
            }          
               #middle{
                float: left;
                width: 100%;     
               height: 500px;
                background:blue;
                
            }
            #left{
                float:left;
                width:180px;
                height:500px;
                margin-left:-100%;
                background: #0c9;
                position: relative;
                left: -180px;
            }
            #right{
                float: left;
                width: 200px;
                height: 500px;
                margin-left: -200px;
                background: #0c9;
                position: relative;
                right: -200px;
            }
    </style>
</head>
<body>
    <div id="bd">
            <div id="middle">middle</div>
            <div id="left">left</div>
            <div id="right">right</div>       
             </div>
                
</body>
</html>

其中:

左右栏通过添加负的margin放到正确的位置了,此段代码是为了摆正中间栏的位置
#bd{
                padding: 0 200px 0 180px;
                height: 100px;
            }
中间栏的位置摆正之后,左栏的位置也相应右移,通过相对定位的left恢复到正确位置
#left{
                
                position: relative;
                left: -180px;
            }
中间栏的位置摆正之后,右栏的位置也相应左移,通过相对定位的right恢复到正确位置
#right{
                
                position: relative;
                right: -200px;
            }

双飞翼布局:

为了让中间div内容不被遮挡,直接在中间div内部创建子div用于放置内容,在该div里用margin-left和margin-right为左右两栏div留出位置。

优缺点:

优点:不会像圣杯布局那样变形

缺点是:多加了一层dom节点

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        body{
            margin: 0;
        }
        .mian>div{
            float: left;
        }
        .left{
            width: 200px;
            background-color: cyan;
            margin-left: -100%;
        }
        .right{
            width: 200px;
            background-color: darkorange;
            margin-left: -200px;
        }
        .midden{
            width: 100%;
            background-color: deepskyblue;
        }
        .centent{
            margin-left: 200px;
            margin-right: 200px;
        }
    </style>
</head>
<body>
    <div class="mian">
        <div class="midden">
   <div class="centent">中间</div>
        </div>
        <div class="left">
             左边
        </div>
        <div class="right">右边</div>
    </div>
</body>
</html>

圣杯与双飞翼的区别

圣杯布局和双飞翼布局达到的效果基本相同,都是侧边两栏宽度固定,中间栏宽度自适应。 主要的不同之处就是在解决中间部分被挡住的问题时,采取的解决办法不一样,圣杯布局是在父元素上设置了padding-left和padding-right,在给左右两边的内容设置position为relative,通过左移和右移来使得左右两边的内容得以很好的展现,而双飞翼则是在center这个div中再加了一个div来放置内容,在给这个新的div设置margin-left和margin-right 。`

七、Flex 布局

flex基本概念

2009年,W3C 提出了一种新的方案----Flex 布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。

采用 Flex 布局的元素,称为 Flex 容器(flex container),简称"容器"。它的所有子元素自动成为容器成员,称为 Flex 项目(flex item),简称"项目"

设为 Flex 布局以后,子元素的floatclear,positionvertical-align属性将失效

开启flex布局

display:flex

flex容器属性

flex-direction属性决定主轴的方向(即项目的排列方向 row(默认值):主轴为水平方向,起点在左端。 row-reverse:主轴为水平方向,起点在右端。 column:主轴为垂直方向,起点在上沿。 column-reverse:主轴为垂直方向,起点在下沿。
flex-wrap设置项目是否换行 * nowrap(默认):不换行。 * wrap:换行,第一行在上方。
flex-flowflex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap
justify-content定义了项目在主轴上的对齐方式 flex-start(默认值):左对齐 flex-end:右对齐 center: 居中 space-between:两端靠边对齐,项目之间的间隔都相等。 space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍
align-items定义项目在侧轴上如何对齐 一根侧轴的情况下 flex-start:交叉轴的起点对齐。 flex-end:交叉轴的终点对齐。 center:交叉轴的中点对齐。 baseline: 项目的第一行文字的基线对齐。 stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度
align-content定义了多根侧轴线的对齐方式。 flex-start:与交叉轴的起点对齐。 flex-end:与交叉轴的终点对齐。 center:与交叉轴的中点对齐。 space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。 space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。 stretch(默认值):轴线占满整个交叉轴

八、行内元素.块级元素. 空(void)元素

CSS规范规定,每个元素都有display属性,确定该元素的类型,每个元素都有默认的display值,比如div默认display属性值为“block”,成为“块级”元素;span默认display属性值为“inline”,是“行内”元素。

  • 行内元素有:a b span img input select strong

  • 块级元素有:div ul ol li dl dt dd h1 h2 h3 h4…p

  • 空元素:br hr img input link meta

  • 行内元素不可以设置宽高,不独占一行

  • 块级元素可以设置宽高,独占一行

  • 块级元素转行内元素:display:block

  • 行内元素转块级元素:displai:inline

  • 行内元素或块级元素转行内块元素:display:inlind-block

九、CSS Hack

什么是CSS Hack?

简而言之就是:针对不同浏览器编写带有前缀的css就是csshack,就是前段hack. 三种方法

方法一:IE条件注释法

(lte表示小于等于 lt表示小于 gte表示大于等于 gt表示大于 !表示不等于) IE条件注释是微软官方推荐的方法,向前兼容性方面考虑,它是最安全的hack方式,理论上是最好的选择,但这种方式需要将所有的hack根据浏览器类型集中在相应的文件中

<!--[if IE]>
<link type="text/CSS href="test.css ref ="stylesheet>
<![endif]-->

test.css文件是只加载到IE浏览器会生效,对于非IE浏览器会忽略这条语句.

<!--[if gt IE 6]>
<link type="text/CSS href="test.css ref ="stylesheet>
<![endif]-->

test.css文件是只加载到IE6以上版本时候加载生效.

虽然条件注释最常用于CSS的hack,但他能包含的内容其实不仅仅是link标签,它还可以用这样的形式进行hack(条件注释和style标签)

<!--[if IE 6]>
<style type="text/CSS >
.test{
}
</style>
<![endif]-->

条件注释和script标签

<!--[if IE 6]>
<script type="text/JavaScript">
alert("我是IE 6");
</script>
<![endif]-->

针对不同IE版本分别导入样式

<!--[if IE 6]>
<link type="text/CSS href="ie6.css ref ="stylesheet>
<![endif]-->

<!--[if gt IE 7]>
<link type="text/CSS href="ie7.css ref ="stylesheet>
<![endif]-->

<!--[if gt IE 8]>
<link type="text/CSS href="ie7.css ref ="stylesheet>
<![endif]-->

虽然它的向后兼容性是最好的,但它的缺点也非常明显,将同一css选择服下的样式分散到三个文件中去控制,增加了开发和维护成本.

方法二.选择符前缀法

原理是在css选择符前加一些只有特定浏览器才能识别的前缀 例如"html"只对IE6生效,"+html"只对IE7生效,这就不能保证IE9和IE10不识别,在向后兼容性有风险( 只能在CSS样式文件或内嵌式的style中这样写,不能用于行内式)

方法三.样式属性前缀法

原理是在样式的属性名前加前缀,这些前缀旨在特定的浏览器生效( 行内 style="width:200px" IE6 style="*width:200px" IE7 或者在CSS文件中写这样的样式,也是可以的) 如""只在IE6生效 "*"只在IE7生效

<style type="text/CSS >
.test{
width:80px;
*width:70px;
_width:60px;
}
</style>

样式属性前缀法相比起选择符前缀法,聚合程度更高,代码更精简,可维护性很强,和选择符前缀法相同,向后兼容性有风险

十、src与href的区别

href标识超文本引用,用在linka等元素上,href是引用和页面关联,是在当前元素和引用资源之间建立联系

src表示引用资源,表示替换当前元素,用在imgscriptiframe上,src是页面内容不可缺少的一部分。

src是source的缩写,是指向外部资源的位置,指向的内部会迁入到文档中当前标签所在的位置;在请求src资源时会将其指向的资源下载并应用到当前文档中,例如js脚本,img图片和frame等元素。

<script src="js.js"></script>当浏览器解析到这一句的时候会暂停其他资源的下载和处理,直至将该资源加载,编译,执行完毕,图片和框架等元素也是如此,类似于该元素所指向的资源嵌套如当前标签内,这也是为什么要把js饭再底部而不是头部。

<link href="common.css" rel="stylesheet"/>当浏览器解析到这一句的时候会识别该文档为css文件,会下载并且不会停止对当前文档的处理,这也是为什么建议使用link方式来加载css而不是使用@import。

十一、link和@import的区别

两者都是外部引用CSS的方式,但是存在一定的区别:

区别1:link是XHTML标签,除了加载CSS外,还可以定义RSS等其他事务;@import属于CSS范畴,只能加载CSS。

区别2:link引用CSS时,在页面载入时同时加载;@import需要页面网页完全载入以后加载。

区别3:link是XHTML标签,无兼容问题;@import是在CSS2.1提出的,低版本的浏览器不支持。

区别4:ink支持使用Javascript控制DOM去改变样式;而@import不支持。

十二、H5和C3新特性

  1. 选择器

  2. 背景和边框

  3. 文本效果

  4. 2D/3D 转换 — 变形(transform)、过渡(transtion)、动画(animation)

1.选择器

:last-child /* 选择元素最后一个孩子 */
:first-child /* 选择元素第一个孩子 */(fer斯特)
:nth-child(1) /* 按照第几个孩子给它设置样式 */
:nth-child(even) /* 按照偶数 */
:nth-child(odd)  /* 按照奇数 */
:disabled /* 选择每个禁用的dom元素 */
:checked /* 选择每个被选中的dom元素 */
:not(selector) /* 选择非 selector 元素的每个元素 */
::selection /* 选择被用户选取的元素部分 */

伪类和伪元素:

根本区别在于它们是否创造了新的元素(抽象)

伪类:用于向某些选择器添加特殊的效果(没有创建新元素)

:last-child /* 选择元素最后一个孩子 */
:first-child /* 选择元素第一个孩子 */
:nth-child(1) /* 按照第几个孩子给它设置样式 */
a:link {color: #FF0000} /* 未访问的链接 */
a:visited {color: #00FF00} /* 已访问的链接 */
a:hover {color: #FF00FF} /* 鼠标移动到链接上 */
a:active {color: #0000FF} /* 选定的链接 */

伪元素:创建了 html 中不存在的元素,用于将特殊的效果添加到某些选择器

::before {} /* 选择器在被选元素的前面插入内容和定义css,使用 content 属性来指定要插入的内容。 */
::after {} /* 选择器在被选元素的后面插入内容和定义css,使用 content 属性来指定要插入的内容。 */
:first-letter /* 选择该元素内容的首字母 */
:first-line /* 选择该元素内容的首行 */
::selection /* 选择被用户选取的元素部分 */

2. 背景和边框

背景:

background-size:规定背景图片的尺寸(cover:填充;100% 100%:拉伸)

background-origin:规定背景图片的定位区域 对于 background-origin 属性,有如下属性 背景图片可以放置于 content-box、padding-box 或 border-box 区域

边框:

border-radius:圆角 box-shadow / text-shadow:阴影 border-image:边框图片

3. 文本效果

属性描述
text-shadow向文本添加阴影
text-justify规定当 text-align 设置为 “justify” 时所使用的对齐方法
text-emphasis向元素的文本应用重点标记以及重点标记的前景色
text-outline规定文本的轮廓
text-overflow规定当文本溢出包含元素时发生的事情
text-wrap规定文本的换行规则
word-break规定非中日韩文本的换行规则
word-wrap允许对长的不可分割的单词进行分割并换行到下一行
text-decoration文本修饰符:overline、line-through、underline 分别是上划线、中划线、下划线
  • @font-face 自定义字体

  • 渐变,CSS3新增了渐变效果,包括 linear-gradient(线性渐变)和 radial-gradient(径向渐变)

4. 2D/3D 转换

变形transform

变形有rotate旋转、scale缩放、translate位移、skew倾斜

过渡transition

过渡transition是一个复合属性,可以同时定义transition-property、transition-duration、transition-timing-function、transition-delay子属性值

一般写在一起:

div
{
width:100px;
transition: width 2s;
-moz-transition: width 2s; /* Firefox 4 */
-webkit-transition: width 2s; /* Safari 和 Chrome */
-o-transition: width 2s; /* Opera */
}

动画animation

动画的使用,首先通过@(-webkit-)keyframes 定义动画名称及动画的行为,再通过animation属性设置动画特征相关值进行调用

.myClass {
	-webkit-animation-name: fadeIn;
	-moz-animation-name: fadeIn;
	-o-animation-name: fadeIn;
	-ms-animation-name: fadeIn;
	animation-name: fadeIn;  /* 不带前缀的放到最后 */
}
/* 复杂属性 keyframes */
@-webkit-keyframes fadeIn {
	0% { opacity: 0; } 100% { opacity: 0; }
}
@-moz-keyframes fadeIn {
	0% { opacity: 0; } 100% { opacity: 0; }
}
@-o-keyframes fadeIn {
	0% { opacity: 0; } 100% { opacity: 0; }
}
@-ms-keyframes fadeIn {
	0% { opacity: 0; } 100% { opacity: 0; }
}
/* 不带前缀的放到最后 */
@keyframes fadeIn {
	0% { opacity: 0; } 100% { opacity: 0; }
}

这些新属性大多在新版浏览器得到了支持,有些需要添加浏览器前缀(-webkit-、-moz-、-ms-、-o-)

H5 新特性

1. h5新增特性:

语义化标签:header、footer、section、nav、aside、article 增强型表单:input 的多个 type 新增表单属性:placehoder、required、min 和 max 音频视频:audio、video canvas 画布 地理定位 拖拽 本地存储: localStorage 没有时间限制的数据存储; sessionStorage, session 的数据存储,当用户关闭浏览器窗口后,数据会被删除 新事件:onresize、ondrag、onscroll、onmousewheel、onerror、onplay、onpause WebSocket:建立持久通信协议

2. 语义化标签

标签描述
header定义了文档的头部区域
footer定义了文档的尾部区域
nav定义文档的导航
section定义文档中的节(section、区段)
article定义页面独立的内容区域
aside定义页面的侧边栏内容
dialog定义对话框,比如提示框

3. 表单类型增强

HTML5 拥有多个新的表单 Input 输入类型。这些新特性提供了更好的输入控制和验证

input 的 type描述
color主要用于选取颜色
date从一个日期选择器选择一个日期
datetime选择一个日期(UTC 时间)
email包含 e-mail 地址的输入域
month选择一个月份
number数值的输入域
range一定范围内数字值的输入域
search用于搜索域
tel定义输入电话号码字段
time选择一个时间
urlURL 地址的输入域

week选择周和年

4. html5 新增的表单属性

表单属性描述
placehoder简短的提示在用户输入值前会显示在输入域上。即我们常见的输入框默认提示,在用户输入后消失
required是一个 boolean 属性。要求填写的输入域不能为空
pattern描述了一个正则表达式用于验证 input 元素的值
min 和 max设置元素最小值与最大值
step为输入域规定合法的数字间隔
height 和 width用于 image 类型的 input 标签的图像高度和宽度
autofocus是一个 boolean 属性。规定在页面加载时,域自动地获得焦点
multiple是一个 boolean 属性。规定 input 元素中可选择多个值

5. html5 新事件

事件描述
onresize当调整窗口大小时触发
ondrag当拖动元素时触发
onscroll当滚动元素滚动元素的滚动条时触发
onmousewheel当转动鼠标滚轮时触发
onerror当错误发生时触发
onplay当媒介数据将要开始播放时触发
onpause当媒介数据暂停时触发

十三、前端常见浏览器兼容性问题解决方案

前言:

不同浏览器的内核不尽相同,所以各个浏览器对网页的解析存在一定的差异。 浏览器内核主要分为两种,一是渲染引擎,另一个是js 引擎 所以浏览器兼容性问题一般指:css兼容、js兼容

常见的浏览器内核:

常见的浏览器内核可以分四种:Trident、Gecko、Blink、Webkit

IE浏览器Trident内核,也成为IE内核
Chrome浏览器Webkit内核,现在是Blink内核
Firefox浏览器Gecko内核,俗称Firefox内核
Safari浏览器Webkit内核
Opera浏览器最初是自己的Presto内核,后来加入谷歌大军,从Webkit又到了Blink内核;
360浏览器IE+Chrome双内核
猎豹浏览器IE+Chrome双内核
百度浏览器IE内核
QQ浏览器Trident(兼容模式)+Webkit(高速模式)

常见的兼容性问题:

1、不同浏览器的标签默认的外补丁( margin )和内补丁(padding)不同

解决方案: css 里增加通配符 * { margin: 0; padding: 0; }

2、IE6双边距问题;在 IE6中设置了float , 同时又设置margin , 就会出现边距问题

解决方案:设置display:inline;

3、当标签的高度设置小于10px,在IE6、IE7中会超出自己设置的高度

解决方案:超出高度的标签设置overflow:hidden,或者设置line-height的值小于你的设置高度

4、图片默认有间距

解决方案:使用float 为img 布局

5、IE9一下浏览器不能使用opacity

解决方案:

opacity: 0.5;filter: alpha(opacity = 50);filter: progid:DXImageTransform.Microsoft.Alpha(style = 0, opacity = 50);

6、边距重叠问题;当相邻两个元素都设置了margin 边距时,margin 将取最大值,舍弃最小值;

解决方案:为了不让边重叠,可以给子元素增加一个父级元素,并设置父级元素为overflow:hidden;

7、cursor:hand 显示手型在safari 上不支持

解决方案:统一使用 cursor:pointer

8、两个块级元素,父元素设置了overflow:auto;子元素设置了position:relative ;且高度大于父元素,在IE6、IE7会被隐藏而不是溢出;

解决方案:父级元素设置position:relative

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值