前端笔记

 

HTML

所有浏览器的兼容性:

/*不同浏览器,默认margin、padding不同,都设置为0,是为了所有浏览器的兼容性*/

/*如果写成“*”,先将常用的标签设置为0,然后遇到每个标签就加进来,

写法:(此方法慎用,此代码会轮询所有的标签,可能会增加网页加载的压力)

* {

margin: 0px;

padding: 0px;

}

*/

/*按以下写法,遇到一个标签就加入到这里*/

body,div,p,ul,li,dl,dt,dd,h1,a{

margin: 0px;

padding: 0px;

}

 

 

块状元素:

可以设置宽高

可以设置水平居中,margin: 0 auto

容器型元素

内联元素:

不可以设置宽高

不可以设置水平居中,margin: 0 auto

不是容器型元素

 

设置一个导航栏用ul li,具体用法参见练习代码

设置一个可点击图片:

a标签设置display:block,成为块状元素,设置宽高

a标签内部放一个img标签,display:block,设置宽高

 

line-height: ?px;用于设置将块状元素在垂直方向铺满,如有文字会垂直居中,如果将文字大小设为100%,会撑满整个块状元素的空间

 

text-align: center;文字水平居中

margin:20px 0;/*往外挤空间*/,padding:20px 0;/*往内挤空间*/,根据具体的场景选择用哪个

 

#nav li .nav_active{

background: linear-gradient(to bottom,#EEEEEE,#555555);

*background: #999999;

/*

技巧:

对于ie6来说:

第一行linear-gradient不支持,所以使用可支持的*设置background: #999999

对于chrome来说:

第一行linear-gradient支持,使用不支持的*防止被第二行覆盖

*/

}

 

元素设置为块状元素后,在没有设置高度的情况下,不会进行自适应的计算,这时,内部的子元素设置为float属性后,脱离了文档流,导致父容器高度变为0,

使用overflow: hidden原意为隐藏溢出,这里可以将所有的子元素的浮动,并计算自适应高度,因为父容器没有设置高度,所以不会裁剪,解决(如果父容器设置了高度,将溢出的部分裁剪掉)

 

 

当前后两个元素都有float属性,且top-left不为零时,ie6有double margin left的bug

在前面那个元素使用display: inline解决

 

此处使用margin,不用padding,因为如果使用padding,需要重新设置line-height,使其垂直居中:

#left_article h1{

margin:20px 0;/*往外挤空间*/

}

 

#left_article p{

margin:10px;/*往外挤空间*/

margin-top: 0;

font-size: 14px;

text-indent: 1em;/*一单位em等于一个单位font-size的值(14px)*/

line-height: 200%;/*设置行高*/

}

 

 

 

Css hack

利用同一种语法,在不同浏览器上的效果不一样,来达到适配性

<style type="text/css">

#div1{

width: 200px;

height: 200px;

background: #000;

}

/*对于其他浏览器,加了important,优先级最高,显示为红色

 *对于ie6浏览器,无法识别!,所以显示为蓝色

 */

/*写法一:*/

#div1{

background: #F00!important;/*其他浏览器*/

background: #00F;/*for IE6 only*/

}

/*写法二:*/

#div2{

background: #F00;/*其他浏览器*/

*background: #00F;/*for IE6 only*/

}

</style>

 

百变空间的轮播图

<body>

<!--快捷写法:光标发在行尾,按tab就可以了

div#banner>ul>(li>img[src=img/banner$.jpg])*6

-->

<div id="banner">

<ul>

<li><img src="img/banner1.jpg" alt="" /></li>

<li><img src="img/banner2.jpg" alt="" /></li>

<li><img src="img/banner3.jpg" alt="" /></li>

<li><img src="img/banner4.jpg" alt="" /></li>

<li><img src="img/banner5.jpg" alt="" /></li>

<li><img src="img/banner6.jpg" alt="" /></li>

</ul>

</div>

</body>

 

Javscript

是一门解释性语言,运行慢,但可以跨平台,只支持单线程,分异步、同步线程

 

变量:

可以这样定义一个变量:

a = 1;

变量的命名规则:

 

实验JavaScript的数据类型

var iNum=Number.MAX_VALUE

document.write('Number.MAX_VALUE = ' + iNum + '<br>');

var iNum=Number.MIN_VALUE

document.write('Number.MIN_VALUE = ' + iNum + '<br>');

var iNum=Number.POSITIVE_INFINITY

document.write('Number.POSITIVE_INFINITY = ' + iNum + '<br>');

var iNum=Number.MAX_VALUE/.1

document.write('Number.MAX_VALUE/.1 = ' + iNum + '<br>');

var iNum=Number.MAX_VALUE*1.1

document.write('Number.MAX_VALUE/.1 = ' + (iNum == Number.POSITIVE_INFINITY) + '<br>');

//等号的优先级高于==

var iNum=Number.MAX_VALUE*1.1

document.write('Number.MAX_VALUE/.1 = ' + isFinite(iNum) + '<br>');

document.write('Number.MAX_VALUE/.1 = ' + isFinite(5) + '<br>');

iNum = NaN//不是数字类型

document.write('NaN == NaN = ' + (iNum == iNum) + '<br>');

iNum = NaN//不是数字类型

document.write('isNaN(iNum) = ' + (isNaN(iNum)) + '<br>');

var sToken = 'hello "shen"\'xianjie\' world!'

document.write('sToken = ' + (sToken) + '<br>');

var sToken2 = sToken.concat(' abc ','abc ','abc ','abc ')

document.write('sToken2 = ' + (sToken2) + '<br>');

document.write('sToken2长度 = ' + (sToken2.length) + '<br>');

 

sToken = 'hello world!'

var iLength = sToken.indexOf('w')

document.write('sToken.indexOf = ' + (iLength) + '<br>');

document.write('sToken.charAt = ' + (sToken.charAt(iLength)) + '<br>');

document.write('sToken.substring = ' + (sToken.substring(0,iLength+1)) + '<br>');

 

var str = 'skjkfk shen fdkfsl gdslkgs xian dflsdkjsdf jie';

var iStart = str.indexOf(' ')

if(iStart != -1){

iEnd = str.indexOf(' ',iStart+1)

if(iEnd != -1){

document.write('result = ' + str.substring(iStart+1,iEnd) + '<br>');

}

}

 

//boolean

var bCheck = 12 == 2;

document.write('boolean = ' + bCheck + '<br>');

 

//udefined

var oTemp;

document.write('oTemp = ' + oTemp + '<br>');

//typeOf

var oTemp = 1;

document.write('oTemp = ' + typeof (oTemp) + '<br>');

var oTemp = 'abc';

document.write('oTemp = ' + typeof (oTemp) + '<br>');

var oTemp = true;

document.write('oTemp = ' + typeof (oTemp) + '<br>');

var oTemp = null;//object

document.write('oTemp = ' + typeof (oTemp) + '<br>');

var oTemp = undefined;

document.write('oTemp = ' + typeof (oTemp) + '<br>');

var oTemp;

document.write('oTemp = ' + typeof (oTemp) + '<br>');

 

//

document.write('undefined == undefined = ' + (undefined == undefined) + '<br>');

document.write('null == null = ' + (null == null) + '<br>');

document.write('undefined == null = ' + (undefined == null) + '<br>');

 

jQuery和zepto的区别:

Zepto适用于移动端,对网络加载速度有要求的,因为它的大小只有jq的1/10

 

 

 

MVC模型

<script type="text/javascript">

function Component(){};//申明函数

var component = new Component();//实例化函数Component

function render(tpl,data){

var temp = tpl;

for(var i in data){

var regex = new RegExp('{{' + i + '}}','g');

console.log(regex);

console.log(data[i]);

temp = temp.replace(regex,data[i]);

return temp;

}

}

 

var a = $.extend(component,{//$使用jq,exetend方法为合并2个对象

$el:$('#a'),

//-------------------Module--------------------负责数据存储

model:{

text:'View is rendered!',

},

//--------------------View---------------------负责数据渲染

view(data){

var tpl = '<span id="showText">{{text}}</span>';

var html = render(tpl,data);

this.$el.html(html);

},

event:['change'],

//------------------Controller-----------------负责控制数据到数据渲染的过程

// flag = false,

controller(){

var self = this;

self.view(self.model);

//模拟ajax的数据改动

$('#btn').on('click',function(e){

self.model.text = 'ajax change data';

self.view(self.model);

});

//模拟用户点击

self.event['change'] = function(){

self.model.text = 'user click data!';

self.view(self.model);

flag = -1;

}

}

 

});

 

$(function(){

a.controller();

});

</script>

 

 

让错误更早的发现

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个文档包含了HTML/css的一些基础,还有JavaScript中的基础语法、DOM、BOM还有一些学习js中面向对象、和移动web开发、AJAX、jQuery的一些总结,还有些Web前端与移动开发面试宝典; 6、什么是事件冒泡/捕获? 事件冒泡: 事件到达事件目标之后不会结束,会逐层向上冒泡,直至document对象,也就是子元素事件的触发会影响父元素的事件; 开关事件冒泡: A,开启事件冒泡:event.addEventListener(eventName,handler,false); B,关闭事件冒泡:假设传统方式事件的返回值为e,就可以通过e.stopPropagation()来关闭事件冒泡; C ,return false; 同时具有阻止冒泡和阻止默认行为的功能 事件捕获:父元素的事件会影响子元素的事件; 开启事件捕获:event.addEventListener(eventName,handler,true) 7、请说说事件委托机制?这样做有什么好处? 事件委托,就是某个事件本来该自己干的,但是自己不干,交给别人来干。就叫事件委托。 打个比方:一个 button对象,本来自己需要监控自身的点击事件,但是自己不来监控这个点击事件,让自己的父节点来监控自己 的点击事件。 优点: A,提高性能:列如,当有很多li同时需要注册事件的时候,如果使用传统方法来注册事件的话,需要给每 一个li注册事件。然而如果使用委托事件的话,就只需要将事件委托给该一个元素即可。这样就能提高性能。 B,新添加的元素还会有之前的事件; 11、怎么理解jQuery? JQuery就是JavaScript和查询(Query),是一个Javascript库。可以用来操作文档对象、 选择DOM元素、制作动画效果、事件处理、使用Ajax等。 优点: a、轻量级 b、具有强大的选择器 c、封装了大量的DOM操作 d、事件处理机制相当可靠 e、完善的Ajax f、不污染顶级变量 g、出色的浏览器兼容性 h、链式操作方式 i、隐式迭代 j、行为与结构分离 k、支持丰富的插件 l、完善的文档 m、开源 12、Jquery.on这个方法怎么看? 答: jQuery.on()方法可以给匹配元素(可以是多个)绑定一个或多个函数, off 可以解除绑定

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值