二:文檔類型聲明方式:
html:
過渡型:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
嚴格型:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
架構型:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
xml:
過渡型:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
嚴格型:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
架構型:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
html5:
<!DOCTYPE html>
三、語義:
html:沒有展現結構語義化的标簽,我們通常都是這樣來命名的<div id="header"></div>.這樣表示網站的頭部。
html5:在語義上卻有很大的優勢。提供了一些新的标簽,比如:<header><article><footer>
html5格式: 可以用header和article代替div nav用來裝導航
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<script src="scripts/modernizr-1.6.min.js"></script>
</head>
<body>
<header>
<nav>
<ul>
</ul>
</nav>
</header>
<article>
</article>
</body>
</html>
css一般是四個
1.basic.css把另外三個整合起來
@import url(color.css);
@import url(layout.css);
@import url(typography.css);
2.color.css 定義顔色
3.layout.css 定義布局 包括背景圖檔啥的
4.typography.css 定義字型大小啥的
表示全部設定距離為0 這樣就可以把不同浏覽器為元素設定的不同内外邊距全都删除
* {
padding: 0;
margin: 0;
}
設定ul導航欄為橫向排列
header nav li {
display: inline;
}
設定背景圖檔
background-image: url(../images/background.gif);
背景圖檔是否固定或者随着頁面的其餘部分滾動
background-attachment
scroll預設值 會随着其餘部分滾動而移動
fixed 當頁面的其餘部分滾動時 背景圖像不會移動
定位背景圖像:
background-position
一般center居中
是否及如何重複背景圖像
background-repeat
repeat-x 水準重複
repeat-y 垂直重複
no-repeat 背景圖像僅顯示一次
舉例:background-position: bottom right; 父窗體不是body而是 header 定義
背景圖檔的位置
header {
background-image: url(../images/guitarist.gif);
background-repeat: no-repeat;
background-position: bottom right;
border-width: .1em;
border-style: solid;
border-bottom-width: 0;
}
就近原則
1.如果是在同一個級别下 比如都是 p{} p{} 會按照加載的順序後面的會覆寫掉前面的樣式
2.不是一個級别下 聽靠近那一方 比如 p{} p scan{} 最終聽後者的樣式定義
photos header {
background-image: url(../images/basshead.gif);
}
header {
background-image: url(../images/guitarist.gif);
}
定義版式 字型格式之類的:
font-size: 76%; 字型大小
font-size: 1em;
font-family: "Helvetica","Arial",sans-serif; 字型格式
font-weight: bold; 加粗
text-decoration: none; 定義字型下劃線啥的
line-height: 10px 行基線的距離
font:順序
•font-style
•font-variant normal 預設值
•font-weight
•font-size/line-height
•font-family
js常見的函數:
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
oldonload();
func();
}
}
}
function insertAfter(newElement,targetElement) {
var parent = targetElement.parentNode;
if (parent.lastChild == targetElement) {
parent.appendChild(newElement);
} else {
parent.insertBefore(newElement,targetElement.nextSibling);
}
}
function addClass(element,value) {
if (!element.className) {
element.className = value;
} else {
newClassName = element.className;
newClassName+= " ";
newClassName+= value;
element.className = newClassName;
}
}
突出超連結 添加挂鈎就可以對不同頁面進行不同操作
function highlightPage() {
if (!document.getElementsByTagName) return false;
if (!document.getElementById) return false;
var headers = document.getElementsByTagName('header');
if (headers.length == 0) return false;
var navs = headers[0].getElementsByTagName('nav');
if (navs.length == 0) return false;
var links = navs[0].getElementsByTagName("a");
for (var i=0; i<links.length; i++) {
var linkurl;
for (var i=0; i<links.length; i++) {
linkurl = links[i].getAttribute("href");
if (window.location.href.indexOf(linkurl) != -1) {
links[i].className = "here";
var linktext = links[i].lastChild.nodeValue.toLowerCase();
document.body.setAttribute("id",linktext);
}
}
}
}
如果想要實作内部頁面連結跳轉 需要 setion标簽
每個連結包涵對應部分的id 開頭的”#”表示内部連結 要提取一部分的id值
需要split 得到一個數組一個是#前面的内容 一個是#後面的内容
隐藏内容需要 元素.style.display=”none”;
如果局部變量和全局變量都無法完成任務的話 需要給元素指派屬性
比如 多個函數對同一個元素進行操作的時候要實作立即中斷
還有同一個頁面連結需要得到id
表單中分組用<fieldset> 标簽
<form method="post" action="submit.html"> method是規定用于發送 form-data 的 HTTP 方法
action是向何處發送表單
<input type="text" id="name" name="name" placeholder="Your name" required="required" />
placeholder="Your name"是占位符文本 提醒使用者如何填寫資訊 required是必須填寫資訊
<input type="button" /> 這就是一個按鈕。如果你不寫javascript 的話,按下去什麼也不會發生。
<input type="submit" /> 這樣的按鈕使用者點選之後會自動送出 form,除非你寫了javascript 阻止它。
而thisform.onsubmit = function()是阻止屬性 如果傳回的是false則不送出
<label for="name">Name:</label>
<input type="text" id="name" name="name" placeholder="Your name" required="required" />
label的for屬性是用來關聯的input的 label被單擊時關聯的表單字段獲得焦點
form對象:
form.length傳回的是表單元素 childNodes.length傳回的是元素包涵所有節點的個數
element.value儲存的是表單元素的目前值
如果有placeholder屬性 就是它的屬性 否則就是輸入框中的内容
function resetFields(whichform) {
if (Modernizr.input.placeholder) return;
for (var i=0; i<whichform.elements.length; i++) {
var element = whichform.elements[i];
if (element.type == "submit") continue;
if (!element.getAttribute('placeholder')) continue;
element.onfocus = function() {
if (this.value == this.getAttribute('placeholder')) {
this.value = "";
}
}
element.onblur = function() {
if (this.value == "") {
this.value = this.getAttribute('placeholder')||this.placeholder;
}
}
element.onblur();
}
}
将表單的内容傳遞給一個位址 然後更新原位址的<article>屬性 輸入框不能為空 emil框得有@和.
function focusLabels() {
if (!document.getElementsByTagName) return false;
var labels = document.getElementsByTagName("label");
for (var i=0; i<labels.length; i++) {
if (!labels[i].getAttribute("for")) continue;
labels[i].onclick = function() {
var id = this.getAttribute("for");
if (!document.getElementById(id)) return false;
var element = document.getElementById(id);
element.focus();
}
}
}
function resetFields(whichform) {
if (Modernizr.input.placeholder) return;
for (var i=0; i<whichform.elements.length; i++) {
var element = whichform.elements[i];
if (element.type == "submit") continue;
if (!element.getAttribute('placeholder')) continue;
element.onfocus = function() {
if (this.value == this.getAttribute('placeholder')) {
this.value = "";
}
}
element.onblur = function() {
if (this.value == "") {
this.value = this.getAttribute('placeholder');
}
}
element.onblur();
}
}
function isFilled(field) {
return (field.value.length > 1 && field.value != field.placeholder);
}
function isEmail(field) {
return (field.value.indexOf("@") != -1 && field.value.indexOf(".") != -1);
}
function validateForm(whichform) {
for (var i=0; i<whichform.elements.length; i++) {
var element = whichform.elements[i];
if (element.getAttribute("required") == 'required') {
if (!isFilled(element)) {
alert("Please fill in the "+element.name+" field.");
return false;
}
}
if (element.getAttribute("type") == 'email') {
if (!isEmail(element)) {
alert("The "+element.name+" field must be a valid email address.");
return false;
}
}
}
return true;
}
function prepareForms() {
for (var i=0; i<document.forms.length; i++) {
var thisform = document.forms[i];
resetFields(thisform);
thisform.onsubmit = function() {
if (!validateForm(this)) return false;
var article = document.getElementsByTagName('article')[0];
if (submitFormWithAjax(this, article)) return false;
return true;
}
}
}
// Ajax
function getHTTPObject() {
if (typeof XMLHttpRequest == "undefined")
XMLHttpRequest = function () {
try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); }
catch (e) {}
try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); }
catch (e) {}
try { return new ActiveXObject("Msxml2.XMLHTTP"); }
catch (e) {}
return false;
}
return new XMLHttpRequest();
}
function displayAjaxLoading(element) {
// Remove the existing content.
while (element.hasChildNodes()) {
element.removeChild(element.lastChild);
}
// Create a loading image.
var content = document.createElement("img");
content.setAttribute("src","images/loading.gif");
content.setAttribute("alt","Loading...");
// Append the loading element.
element.appendChild(content);
}
function submitFormWithAjax( whichform, thetarget ) {
var request = getHTTPObject();
if (!request) { return false; }
// Display a loading message.
displayAjaxLoading(thetarget);
// Collect the data.
var dataParts = [];
var element;
for (var i=0; i<whichform.elements.length; i++) {
element = whichform.elements[i];
dataParts[i] = element.name + '=' + encodeURIComponent(element.value);
}
var data = dataParts.join('&');
request.open('POST', whichform.getAttribute("action"), true);
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.onreadystatechange = function () {
if (request.readyState == 4) {
if (request.status == 200 || request.status == 0) {
var matches = request.responseText.match(/<article>([\s\S]+)<\/article>/);
if (matches.length > 0) {
thetarget.innerHTML = matches[1];
} else {
thetarget.innerHTML = '<p>Oops, there was an error. Sorry.</p>';
}
} else {
thetarget.innerHTML = '<p>' + request.statusText + '</p>';
}
}
};
request.send(data);
return true;
};