前端面试题
1. 创建css的三种方式:1.元素内嵌样式;2.文档内嵌样式;3.外部引入样式
link @import ”test.css”(性能慢)
重叠样式与继承样式
样式优先级从低到高
a. 浏览器样式(元素自身样式)
b. 外部引入的样式(link)
c. 文档内嵌样式
d. 元素内嵌样式
2. js模板引擎:就是一段代码块里中有几个变量待定,通过模板引擎函数把数据塞进去
原理:
1.预编译 (编译赋值过程却是在渲染之前完成的,声明在渲染函数头部)
2.正则表达式
<!DOCTYPEhtml>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<scripttype="text/javascript" src="js/arttmpl.js"></script>
</head>
<body>
<div id='content'></div>
<script id='content-ul-template'type="text/html">
<h1><%=title%></h1>
<%include('content-ul-template-child')%>
</script>
<script id='content-ul-template-child'type="text/html">
<ul>
<%for(var i=0;i<list.length;i++){%>
<li><%=list[i]%></li>
<%}%>
</ul>
</script>
<script>
var data={
title:'条目主题',
list:['zhangsan','lisi','wangwu']
};
varhtml=template('content-ul-template',data);
document.getElementById('content').innerHTML=html;
</script>
</body>
</html>
3. 每个厂商浏览器的展示不同,也就是相同代码,不同浏览器展示出来不一样(怪异模式),w3c进行规范<!doctype html>
4. Utf-8国际编码 gbkgb2312 中文编码
5. 为了排名便于搜索排名,用关键字符合seo (ajax不适合seo)
<meta > name:keyword,,refresh content=””
6. 瀑布流图片懒加载
先一个大盒子,再分割成4列div,每一列有多个小块div【盒子模型标签】
7. Margin padding
7.1行内元素设置不起作用
7.2 margin: 10px 20px 30px; 上:10px 左右:20px 下:30px; 四个值:上右下坐
8. Ul li 除去点; ul li{list-style:none;}
9. display:inline 的作用是设置对象做为行内元素显示,inline是内联对象的默认值(ps:内联对象就是不自动产生换行的元素,比如span)而我们一般用的div是块级元素,默认display属性是block, 但将div的display设置为inline的话,则多个div可以像span一样显示在一行了。
经典用法编辑
display:inline比较经典的用法是用在 <ul> 下的 <li> 中 内联 block一般一个块占一行,除非float inline是自动排为一行,就象段内的文字一样,可成为多行。
display:inline的作用是设置对象做为行内元素显示,inline是内联对象的默认值(ps:内联对象就是不自动产生换行的元素,比如span) 而我们一般用的div是块级元素,默认display属性是block, 但将div的display设置为inline的话,则多个div可以象span一样显示在一行了。
display:inline对应不显示为 display:none
display:block对应不显示为 hidden
说通俗点 样式为none的元素不占位置,而样式为hidden的元素虽然不显示但还是占地方。
【案例1】: div下有个ul li, li的内容居中,关键在li里用display:inline;而不是用float,如果用float
Li元素不会居中了
代码: <!DOCTYPE html>
<html>
<head>
<metacharset="UTF-8">
<title>瀑布流图片懒加载</title>
<metaname="keywords" content="懒加载,瀑布流"></menu>
<menuname="description" content="fdddddddd"></menu>
<style>
*{ margin: 0px;padding: 0px; }
#box{
width:98%; /*=宽*/
height:auto;/*高*/
background-color:burlywood;
margin:100px auto;
text-align: center;
}
ul
{padding: 30px 0; }
li
{display: inline; }
</style>
</head>
<body>
<divid="box">
<ul>
<li>aaa</li>
<li>bb</li>
<li>cc</li>
<li>dd</li>
<li>ee</li>
</ul>
</div>
</body>
</html>
总结:在div里li居中, 设置div{text-align: center;} 设置li{ display: inline;}
display:block就是将元素显示为块级元素.
block元素的特点是:
总是在新行上开始;
高度,行高以及顶和底边距都可控制;
宽度缺省是它的容器的100%,除非设定一个宽度
<div>,<p>, <h1>, <form>, <ul> 和 <li>是块元素的例子。
display:inline就是将元素显示为行内元素.
inline元素的特点是:
和其他元素都在一行上;
高,行高及顶和底边距不可改变;
宽度就是它的文字或图片的宽度,不可改变。
<span>,<a>, <label>, <input>, <img>, <strong> 和<em>是inline元素的例子。
inline和block可以控制一个元素的行宽高等特性,需要切换的情况如下:
让一个inline元素从新行开始;
让块元素和其他元素保持在一行上;
控制inline元素的宽度(对导航条特别有用);
控制inline元素的高度;
无须设定宽度即可为一个块元素设定与文字同宽的背景色。
display:inline-block将对象呈递为内联对象,但是对象的内容作为块对象呈递。旁边的内联对象会被呈递在同一行内,允许空格。
inline-block的元素特点:
将对象呈递为内联对象,但是对象的内容作为块对象呈递。旁边的内联对象会被呈递在同一行内,允许空格。(准确地说,应用此特性的元素呈现为内联对象,周围元素保持在同一行,但可以设置宽度和高度地块元素的属性)
并不是所有浏览器都支持此属性,目前支持的浏览器有:Opera、Safari在IE中对内联元素使用display:inline-block,IE是不识别的,但使用display:inline-block在IE下会触发layout,从而使内联元素拥有了display:inline-block属性的表症。从上面的这个分析,也不难理解为什么IE下,对块元素设置display:inline-block属性无法实现inline-block的效果。这时块元素仅仅是被display:inline-block触发了layout,而它本就是行布局,所以触发后,块元素依然还是行布局,而不会如Opera中块元素呈递为内联对象。
IE下块元素如何实现display:inline-block的效果?
有两种方法:
1、先使用display:inline-block属性触发块元素,然后再定义display:inline,让块元素呈递为内联对象(两个display要先后放在两个CSS声明中才有效果,这是IE的一个经典bug,如果先定义了display:inline-block,然后再将display设回inline或block,layout不会消失)。代码如下(...为省略的其他属性内容):
div{display:inline-block;...}
div{display:inline;}
2、直接让块元素设置为内联对象呈递(设置属性display:inline),然后触发块元素的layout(如:zoom:1等)。代码如下:
div{display:inline; zoom:1;...}
以下用个例子来说明三者的区别和用
【区别一】
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""">
<html xmlns="">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312" />
<title>display:inline、block、inline-block的区别</title>
</head>
<style>
div,span{background-color:green;margin:5px;border:1px solid#333;padding:5px;height:52px;color:#fff;}
.b{display:block;}
.i{display:inline;}
div.ib{display:inline-block;}
div.ib{display:inline;}
a.ib{display:inline-block;}
a.ib{display:block;}
span.v{padding:0;margin:0;border:0;vertical-align:middle;height:100%}
</style>
<body>
<div>div display:block</div>
<div class="i">div display:inline</div>
<div class="ib">div display:inline-block</div>
<span>span display:inline</span>
<span class="b">span display:block</span>
<span><a class="ib">adisplay:block</a></span><br />
<div><span class="v"></span>vertical-align:middle</div>
</body>
</html>
【区别二】
<!DOCTYPE html>
<html>
<head>
<metacharset="UTF-8">
<title></title>
<style>
div,span{background-color:green;margin:5px;border:1pxsolid #333;padding:5px;height:52px;color:#fff;}
.b{display:block;}
.i{display:inline;}
div.ib{display:inline-block;}
div.ib{display:inline; width: 400px; height: 200px;}
a.ib{display:inline-block;}
a.ib{display:block;}
span.v{padding:0;margin:0;border:0;vertical-align:middle;height:100%}
</style>
</head>
<body>
<div>div display:block</div>
<div class="i">divdisplay:inline</div>
<div class="ib">divdisplay:inline-block</div>
<span>span display:inline</span>
<span class="b">spandisplay:block</span>
<span><a class="ib">adisplay:block</a></span><br />
<div><span class="v"></span>vertical-align:middle</div>
</body>
</html>
【区别三】
<!DOCTYPE html>
<html>
<head>
<metacharset="UTF-8">
<title></title>
<style>
div,span{background-color:green;margin:5px;border:1pxsolid #333;padding:5px;height:52px;color:#fff;}
.b{display:block;}
.i{display:inline;}
div.ib{display:inline-block;}
div.ib{display:inline; }
a.ib{display:inline-block; width: 400px; height: 200px;}
a.ib{display:block;}
span.v{padding:0;margin:0;border:0;vertical-align:middle;height:100%}
</style>
</head>
<body>
<div>div display:block</div>
<div class="i">divdisplay:inline</div>
<div class="ib">divdisplay:inline-block</div>
<span>span display:inline</span>
<span class="b">spandisplay:block</span>
<span><a class="ib">adisplay:block</a></span><br />
<div><span class="v"></span>vertical-align:middle</div>
</body>
</html>