前端

来源:互联网 发布:闪光暴龙兽数据库 编辑:程序博客网 时间:2024/05/06 17:00

前端面试题

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,description,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,但将divdisplay设置为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;}

 

 

 

10. display:inlineblockinline-block的区别

display:block就是将元素显示为块级元素.

block元素的特点是:
  总是在新行上开始;
  高度,行高以及顶和底边距都可控制;
  宽度缺省是它的容器的100%,除非设定一个宽度
<div>,<p>, <h1>, <form>, <ul> <li>是块元素的例子。

display:inline就是将元素显示为行内元素.

inline元素的特点是: 
  和其他元素都在一行上;
  高,行高及顶和底边距不可改变;
  宽度就是它的文字或图片的宽度,不可改变。
<span>,<a>, <label>, <input>, <img>, <strong> <em>inline元素的例子。

inlineblock可以控制一个元素的行宽高等特性,需要切换的情况如下:

  让一个inline元素从新行开始;
  让块元素和其他元素保持在一行上;
  控制inline元素的宽度(对导航条特别有用);
  控制inline元素的高度;
  无须设定宽度即可为一个块元素设定与文字同宽的背景色。

display:inline-block将对象呈递为内联对象,但是对象的内容作为块对象呈递。旁边的内联对象会被呈递在同一行内,允许空格。

inline-block的元素特点:

  将对象呈递为内联对象,但是对象的内容作为块对象呈递。旁边的内联对象会被呈递在同一行内,允许空格。(准确地说,应用此特性的元素呈现为内联对象,周围元素保持在同一行,但可以设置宽度和高度地块元素的属性)

  并不是所有浏览器都支持此属性,目前支持的浏览器有:OperaSafariIE中对内联元素使用display:inline-blockIE是不识别的,但使用display:inline-blockIE下会触发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设回inlineblocklayout不会消失)。代码如下(...为省略的其他属性内容):

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""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312" />
<title>display:inline
blockinline-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>

 

 

 



0 0