HTML 部分: 语义化
1、什么是HTML语义化?
<基本上都是围绕着几个主要的标签,像标题(H1~H6)、列表(li)、强调(strong em)等等>
根据内容的结构化(内容语义化),选择合适的标签(代码语义化)便于开发者阅读和写出更优雅的代码的同时让浏览器的爬虫和机器很好地解析。
2、为什么要语义化?
为了在没有CSS的情况下,页面也能呈现出很好地内容结构、代码结构:为了裸奔时好看;
用户体验:例如title、alt用于解释名词或解释图片信息、label标签的活用;
有利于SEO:和搜索引擎建立良好沟通,有助于爬虫抓取更多的有效信息:爬虫依赖于标签来确定上下文和各个关键字的权重;
方便其他设备解析(如屏幕阅读器、盲人阅读器、移动设备)以意义的方式来渲染网页;
便于团队开发和维护,语义化更具可读性,是下一步吧网页的重要动向,遵循W3C标准的团队都遵循这个标准,可以减少差异化。
form表单属性
1.form属性
在HTML5中,可以把表单从属元素写在页面任何地方,然后给元素指定一个form属性,属性值为表单的id,这样就可以声明该元素从属于指定表单。
<form id="test">
<input type="text">
</form>
<textarea form="test"></textarea>
2.formaction属性
在HTML5中,可以给所有的提交按钮增加不同的formaction属性,点击不同的按钮,将不同的表单提交到不同的页面。
<input type="submit" formaction="a.php">
<input type="submit" formaction="b.php">
3.fommethod属性
在HTML5中,可以使用formaction属性来对每个表单元素分别指定不同的提交页面,同时也可以使用formmethod属性来对每个表单元素分别指定不同的提交方法。
<input type="submit" formaction="a.php" formmethod="post">
<input type="submit" formaction="a.php" formmethod="get">
4.placeholder属性
placeholder是指文本框或处于未输入状态并且未获得光标焦点时,降低显示输入提示文字不透明度,具体实例如本站网络基地搜索框效果。
<input type="text" placeholder="点击这里搜索">
5.autofocus属性
给文本框、选择框或按钮控件自动获得光标焦点。
<input type="text" autofocus>
6.list属性
在HTML5中,为单行文本框增加一个list属性,该属性的值为某个datalist元素的id。datalist元素类似于选择框(select),该元素本身并不显示,而是文本框获得焦点时以提示输入的方式显示。
list属性
<input type="text" list="w3cmm">
<datalist id="w3cmm" style="display:none;">
<option>HTML</option>
<option>CSS</option>
<option>JavaScript</option>
</datalist>
为了避免在不支持该元素的浏览器中错误的显示,用CSS等设定它为不显示。
7.auotcomplete属性
辅助输入所用的自动完成功能,节省输入时间,同时也十分方便的功能。对于auotcomplete属性,可以指定“on”、“off”、“”(不指定)这三种值。
<input type="text" autocomplete="on" list="w3cmm">
定位
static:
对象遵循常规流。 <’ top ‘>,<’ right ‘>,<’ bottom ‘>,<’ left ‘>等属性不会被应用。
relative:
对象遵循常规流,并且参照自身在常规流中的位置通过 <’ top ‘>,<’ right ‘>,<’ bottom ‘>,<’ left ‘>属性进行偏移时不影响常规流中的任何元素。
absolute:
对象脱离常规流,使用 <’ top ‘>,<’ right ‘>,<’ bottom ‘>,<’ left ‘>等属性进行绝对定位,盒子的偏移位置不影响常规流中的任何元素,其margin不与其他任何margin折叠。
fixed:
对象脱离常规流,使用 <’ top ‘>,<’ right ‘>,<’ bottom ‘>,<’ left ‘>等属性以窗口为参考点进行定位,当出现滚动条时,对象不会随着滚动。
sticky:
对象在常态时遵循常规流。它就像是「relative」和「fixed」的合体,当在屏幕中时按常规流排版,当卷动到屏幕外时则表现如「fixed」。该属性的表现是现实中你见到的吸附效果。(CSS3)
背景
取值:
<’ background-image ‘>:
指定对象的背景图像。可以是真实图片路径或使用渐变创建的“背景图像”
<’ background-position ‘>:
指定对象的背景图像位置。
<’ background-size ‘>:
指定对象的背景图像的尺寸大小。
<’ background-repeat ‘>:
指定对象的背景图像如何铺排填充。
<’ background-attachment ‘>:
指定对象的背景图像是随对象内容滚动还是固定的。
<’ background-origin ‘>:
指定对象的背景图像显示的原点。
<’ background-clip ‘>:
指定对象的背景图像向外裁剪的区域。
<’ background-color ‘>:
指定对象的背景颜色。
要解决以上问题,我们需要引入一个概念——特指度(specificity)。特指度表示一个css选择器表达式的重要程度,可以通过一个公式来计算出一个数值,数越大,越重要。
这个计算叫做“I-C-E”计算公式,
I——Id;
C——Class;
E——Element;
即,针对一个css选择器表达式,遇到一个id就往特指度数值中加100,遇到一个class就往特指度数值中加10,遇到一个element就往特指度数值中加1。
jQuery中为我们提供了很多有用的方法和属性,自己总结的一些常用的函数,方法。个人认为在开发中会比较常用的,仅供大家学习和参考。
事件处理
ready(fn)
代码 :
$(document).ready(function(){
// Your code here...
});
作用 :它可以极大地提高web应用程序的响应速度。通过使用这个方法,可以在DOM载入就绪能够读取并操纵时立即调用你所绑定的函数,而99.99%的JavaScript函数都需要在那一刻执行。
bind(type,[data],fn)
代码 :
$("p").bind("click", function(){
alert( $(this).text() );
});
作用 :为每一个匹配元素的特定事件(像click)绑定一个事件处理器函数。起到事件监听的作用。
toggle(fn,fn)
代码:
$("td").toggle(
function () {
$(this).addClass("selected");
},
function () {
$(this).removeClass("selected");
}
);
作用 :每次点击时切换要调用的函数。如果点击了一个匹配的元素,则触发指定的第一个函数,当再次点击同一元素时,则触发指定的第二个函数。挺有趣的一个函数,在动态实现某些功能的时候可能会用到。
(像click(),focus(),keydown()这样的事件这里就不提了,那些都是开发中比较常用到的。)
外观效果
addClass(class)和removeClass(class)
代码 :
$(".stripe tr").mouseover(function(){
$(this).addClass("over");}).mouseout(function(){
$(this).removeClass("over");})
});
也可以写成:
$(".stripe tr").mouseover(function() { $(this).addClass("over") });
$(".stripe tr").mouseout(function() { $(this).removeClass("over") });
作用 :为指定的元素添加或移除样式,从而实现动态的样式效果,上面的实例中实现鼠标移动双色表格的代码。
css(name,value)
代码:
$("p").css("color","red");
作用 :很简单,就是在匹配的元素中,设置一个样式属性的值。这个个人感觉和上面的addClass(class)有点类似。
slide(),hide(),fadeIn(), fadeout(), slideUp() ,slideDown()
代码 :
$("#btnShow").bind("click",function(event){ $("#divMsg").show() });
$("#btnHide").bind("click",function(evnet){ $("#divMsg").hide() });
作用 :jQuery中提供的比较常用的几个动态效果的函数。还可以添加参数:show(speed,[callback])以优雅的动画显示所有匹配的元素,并在显示完成后可选地触发一个回调函数。
animate(params[,duration[,easing[,callback]]])
作用 :制作动画效果用到的函数,功能非常的强大,可以连续使用此函数。
查找筛选
map(callback)
HTML 代码:
<p><b>Values: </b></p>
<form>
<input type="text" name="name" value="John"/>
<input type="text" name="password" value="password"/>
<input type="text" name="url" value="http://ejohn.org/%22/>
</form>
jQuery 代码:
$("p").append( $("input").map(function(){
return $(this).val();
}).get().join(", ") );
结果:
[ <p>John, password, http://ejohn.org/%3C/p> ]
作用 :将一组元素转换成其他数组(不论是否是元素数组)你可以用这个函数来建立一个列表,不论是值、属性还是CSS样式,或者其他特别形式。这都可以用’$.map()’来方便的建立。
find(expr)
HTML 代码:
<p><span>Hello</span>, how are you?</p>
jQuery 代码:
$("p").find("span")
结果:
[ <span>Hello</span> ]
作用 :搜索所有与指定表达式匹配的元素。这个函数是找出正在处理的元素的后代元素的好方法。
文档处理
attr(key,value)
HTML 代码:
<img/><img/>
jQuery 代码:
$("img").attr("src","test.jpg");
作用 :取得或设置匹配元素的属性值。通过这个方法可以方便地从第一个匹配元素中获取一个属性的值。如果元素没有相应属性,则返回 undefined 。在控制HTML标记上是必备的工具。
html()/html(val)
HTML 代码 :
<div><p>Hello</p></div>
jQuery 代码 :
$("div").html();
结果:
<p>Hello</p>
作用 :取得或设置匹配元素的html内容,同类型的方法还有text()和val()。前者是取得所有匹配元素的内容。,后者是获得匹配元素的当前值。三者有相似的地方常用在内容的操作上。
wrap(html)
HTML 代码:
<p>Test Paragraph.</p>
jQuery 代码:
$("p").wrap("<div class='wrap'></div>");
结果:
<div class="wrap"><p>Test Paragraph.</p></div>
作用 :把所有匹配的元素用其他元素的结构化标记包裹起来。
这种包装对于在文档中插入额外的结构化标记最有用,而且它不会破坏原始文档的语义品质。 可以灵活的修改我们的DOM。
empty()
HTML 代码:
<p>Hello, <span>Person</span> <a href="#">and person</a></p>
jQuery 代码:
$("p").empty();
结果:
<p></p>
作用 :删除匹配的元素集合中所有的子节点。
Ajax处理
load(url,[data],[callback])
url (String) : 待装入 HTML 网页网址。
data (Map) : (可选) 发送至服务器的 key/value 数据。
callback (Callback) : (可选) 载入成功时回调函数。
代码:
$("#feeds").load("feeds.aspx", {limit: 25}, function(){
alert("The last 25 entries in the feed have been loaded");
});
作用 :载入远程 HTML 文件代码并插入至 DOM 中。这也是Jquery操作Ajax最常用最有效的方法。
serialize()
HTML 代码:
<p id="results"><b>Results: </b> </p>
<form>
<select name="single">
<option>Single</option>
<option>Single2</option>
</select>
<select name="multiple" multiple="multiple">
<option selected="selected">Multiple</option>
<option>Multiple2</option>
<option selected="selected">Multiple3</option>
</select><br/>
<input type="checkbox" name="check" value="check1"/> check1
<input type="checkbox" name="check" value="check2"
checked="checked"/> check2
<input type="radio" name="radio" value="radio1"
checked="checked"/> radio1
<input type="radio" name="radio" value="radio2"/> radio2
</form>
jQuery 代码:
$("#results").append( "<tt>" + $("form").serialize() + "</tt>" );
作用 :序列化表格内容为字符串。用于 Ajax 请求。
工具
jQuery.each(obj,callback)
代码 :
$.each( [0,1,2], function(i, n){
alert( "Item #" + i + ": " + n );
});//遍历数组
$.each( { name: "John", lang: "JS" }, function(i, n){
alert( "Name: " + i + ", Value: " + n );//遍历对象
});
作用 :通用例遍方法,可用于例遍对象和数组。
jQuery.makeArray(obj)
HTML 代码:
<div>First</div><div>Second</div><div>Third</div><div>Fourth</div>
jQuery 代码:
var arr = jQuery.makeArray(document.getElementsByTagName("div"));
结果:
Fourth
Third
Second
First
作用 :将类数组对象转换为数组对象。使我们可以在数组和对象之间灵活的转换。
jQuery.trim(str)
作用 :这个大家应该很熟悉,就是去掉字符串起始和结尾的空格。