HTML+CSS+JS快速入門筆記


前言

本文是學習html+css+js的筆記,目標是快速了解前端語言,並不是成為前端高手
教程推薦
菜鳥教程+視頻配套

html

基本結構

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
</html>

head標簽內的內容不會被瀏覽器渲染,body標簽為可見內容

HTML可以做什么?
• 可以設置文本的格式,比如標題、字號、文本顏色、段落等
• 可以創建列表
• 可以插入圖像和媒體
• 可以創建表格
• 可以創建超鏈接

標簽

通過不同的tab標簽顯示不同的文本形式

<title>HTML IS GOOD!</title>
<h1>標題1</h1>
<h2>標題2</h2>
<!-- 注釋 -->
<p>段落 文本</p>

HTML中的標簽大小寫都可以,在xhtml中則必須小寫

列表

<ul>
    <li>列表1</li>                      
    <li>列表2</li>
    <li>列表3</li>
    <li>列表4</li>
</ul>
<ol>
    <li>有序列表1</li>
    <li>有序列表2</li>
    <li>有序列表3</li>
    <li>有序列表4</li>        
</ol>

表格

<table>//定義表格
    <thead>//定義表格頁眉
        <tr>//定義行
            <th>姓名</th>//定義表頭
            <th>年齡</th>
            <th>地址</th>
            <th>職業</th>
        </tr>
    </thead>
    <tbody>//定義表格主體
        <tr>
            <th>小明</th>
            <th>18</th>
            <th>贛水路</th>
            <th>三和大神</th>
        </tr>
        <tr>
            <th>小紅</th>
            <th>22</th>
            <th>學府路</th>
            <th>家里蹲</th>
        </tr>
    </tbody>
</table>

屬性

通過屬性實現更多設置

<a href="http://www.baidu.com" target="_blank">百度跳轉新標簽頁打開</a>
<!-- 超鏈接可以是一個字,一個詞,或者一組詞,也可以是一幅圖像,點擊這些內容跳轉到新的文檔或者當前文檔中的某個部分 -->
<img src="fz.jpg" width="258" height="390">

適用於大多數HTML元素的屬性

屬性 作用
class 為html元素定義一個或多個類名
id 定義元素唯一id
style 規定元素的行內樣式
title 描述了元素的額外信息

常用標簽

link
定義了文檔與外部資源之間的關系,通常用於鏈接到樣式表

<link rel="stylesheet" type="text/css" href="mystyle.css">

style
定義了HTML文檔的樣式文件引用地址,也可以直接添加樣式來渲染HTML文檔

<style type="text/css">
    body {background-color:yellow}
    p {color:blue}
</style>

meta
描述了一些元數據,不顯示在頁面上,會被瀏覽器解析

<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">

div&span
區塊元素,便於設置

表單

<form>
    <div>
        <lable>手機號/郵箱</lable>
        <input type="text" name="phone&email" placeholder="請輸入手機號或郵箱">
    </div>
    <div>
        <label>密碼</label>
        <input type="password" name="password" placeholder="請輸入密碼">、
    </div>
    <input type="submit" name="submit" value="submit">
</form>

提交表單的幾種方式

<form action="form.js" method="POST">
<form name="input" action="html_form_action.php" method="GET">
<form action="http://localhost:3308/user" method="POST" name="post">

form默認method屬性為GET,提交后會跳轉刷新到action頁面,其默認的請求頭的content-typex-www-form-urlencoded==,當一個form表單內部,所有的input中只有一個type="text"時,enter鍵會有默認的提交行為(沒有試驗過)

無刷新頁面提交,設置隱藏的iframe頁面,將target指向它,則不會跳轉

<form action="http://localhost:3308/user" method="POST" name="post" target="targetIfr">
    <p>name:<input type="text" name="username"></p>
    <p>password:<input type="password" name="password"></p>
    <input type="submit" value="提交">
</form>
<iframe name="targetIfr" style="display: none"></iframe>

其他提交暫不說明

舉例

一個百度搜索框(傳遞參數是通過name定位符,並不是通過url)

<form action="https://www.baidu.com/s" method="GET">
    <img src="http://www.baidu.com/img/baidu_jgylogo3.gif" alt="百度Logo" />
    <input type="text" name="wd">
    <input type="submit">
</form>

上傳文件

<form name="form名稱" action="請求地址"  method="請求類型" enctype ="multipart/form-data">
    <input type="file" name="">
    <input type="text" name="">
    <input type="submit" value="提交">
</form>

iframe

<iframe src="http://www.runoob.com" name="iframe_a"></iframe>

HTML實體

區分保留字符和文本,常用實體編碼,對大小寫敏感

顯示結果 描述 實體名稱 實體編號
空格 &nbsp; &#160;
小於號 &lt; &#60;
大於號 &gt; &#62;
& 和號 &amp; &#38;
" 引號 &quot; &#34;
' 單引號 &apos;(IE不支持) &#39;

url編碼

url傳輸只支持ascii字符集,在傳輸其他字符比如漢字是需要進行編碼轉換的
eg:百度搜索"測試",會自動進行url編碼,是utf8的編碼加上%,測->E6B58B,試->E8AF95

常見狀態碼

狀態碼 說明
200 請求成功
301 頁面已經轉移至新的url
302 頁面臨時轉移至新的url
304 未按預期修改文檔。客戶端有緩沖的文檔並發出一個條件性的請求,服務器告訴客戶,原來緩沖的文檔還可以繼續使用
400 因為語法錯誤,服務器未能理解請求
401 合法請求,但對被請求頁面的訪問被禁止。因為需要身份驗證,客戶端沒有提供或身份驗證失敗
403 合法請求,但訪問被禁止
404 服務器無法找到被請求的頁面
405 請求中的方法不被允許
500 請求未完成,服務器遇到不可預知的情況
501 請求未完成,服務器不支持所請求的功能,或服務器無法完成請求
502 請求未完成,服務器充當網關或代理的角色時,從上游服務器收到一個無效的響應
503 服務器當前不可用(過載或宕機)
504 網關超時,服務器充當網關或代理時,未能從上游服務器收到一個及時的響應

css

層疊樣式表,定義如何顯示HTML元素,樣式,布局,不是一種編程語言

三種添加方式

外部樣式表:保存在 .css 文件中,在HTML里使用<link>引用
css/style.css

p{
    color:brown;
}

a.html

<head>
<link rel="stylesheet" href="./css/style.css">
</head>
<p>HELLO WORLD!</p>

內部樣式表:不是用外部css文件,放在HTML<style>標簽里

<style>
    p{
        color: chartreuse;
    }
</style>
<p> HELLO WORLD! </p>

內聯樣式:僅影響一個元素,在HTML元素的style屬性中添加

<p style="color: cornflowerblue;">HELLO WORLD!</p>

選擇器

id一般是唯一的,classtag沒有要求

js

HTML定義了網頁的內容,css描述了網頁的布局,JavaScript控制了網頁的行為
它是一種真正的編程語言

三種添加JavaScript的方式

內部的JavaScript

<script>
    //your script
</script>

外部的JavaScript

<script src="js/script.js"></script>

內聯的JavaScript

<button onclick="creatParagraph()">
    Click me
</button>

0.1+0.2為什么不等於0.3?

js遵循 IEEE 754 尾數位限制,轉換為二進制為無限小數,會將后面多余的位截掉,產生誤差

常量&變量

const A = 'aa';         //定義常量
var b = 'bb';           //定義變量
console.log(A,b);       //打印到控制台

關於作用域

var定義的變量可以在任何地方訪問到
constlet(定義變量的另一種)有作用域,即只能在當前的代碼塊訪問到

改變html內容

x=document.getElementById("demo");  //查找元素
x.innerHTML="Hello JavaScript";    //改變內容

類型相關

x = "3" + 4 + 5;    // 345
y = 3 + 4 + "5";    // 75
console.log(x,y)
console.log(123=="123");    //true 會進行強制類型轉換
console.log(123==="123");   //false 

do while循環

先執行do語句,再進行while判斷,條件為真再執行do語句,直到不滿足while語句,跳出循環

var age = 20;
var a = 19;
do {
    a++;
    console.log(a);
}while (age==a);

for循環

var age = 20;
for (let i=0;i<5;i++){
    age++;
    console.log(age);
}

switch循環

沒有break跳出循環會繼續執行下一個case

names = "小明";
switch(names){
    case "小明":
        console.log("你好,小明");
        break;
    case "小紅":
        console.log("你好,小紅");
        break;
    default:
        console.log("你好,新朋友")
}

三元運算符

var age = 20;
var allowed = age >= 18 ? "yes" : "no";
console.log(allowed);

對象

是一些數據(屬性)和函數(方法)的集合體

var obj = new Object();
var obj2 = {};
obj = {
    names:"xixi",
    age:"20",
    email:"xixi@haha.com",
    contact:{
        phone:"1235855",
        Telegram:"@xixi"
    }
}
console.log(obj)
console.log(obj.names)
console.log(obj.contact.phone)
console.log(obj['contact']['phone'])

數組

空值會顯示

var a = new Array();
a[0] = "dog";
a[1] = "cat";
a[5] = "tiger";
console.log(a)

遍歷數組

b = ["dog","cat","tiger"];
for (let i = 0; i < b.length; i++){
    console.log(b[i],a[i]);
}

遍歷數組for in 會跳過空值

for (let i in a){
    console.log(a[i]);
}

其他一些

b = ["dog","cat","tiger"];
b.push("sheep");    //從最后添加一個值
b.pop();            //從最后刪除一個值
b.reverse();        //倒序輸出
console.log(b)
b.shift();                 //刪除第一個值
b.unshift("elephant");     //從第一位增加值

函數

直接調用,不傳參,它調用同名變量

let a =1;
function add(){
    a++;
}
add();
console.log(a);

不要直接傳入變量名,直接傳具體值

let a = 1;
function add(x=6){
    a+=x;
}
add(4);             //定義變量x傳入x不能執行
console.log(a);     //結果為5,x=6為函數沒傳參的默認值

函數舉例

function add(){
    let sum = 0;
    for (let i=0, j=arguments.length; i<j; i++ ){
        sum += arguments[i];
    }
    return sum;
}
let sum = add(1,2,3,4,5,6,7,8,9,10);
console.log(sum)     //結果為55

函數閉包

function makeAdder(a){
    return function(b){
        return a+b;
    };
}
var x = makeAdder(5);
var sum = x(6);
console.log(sum);

回調函數

function func1(callback){
    callback(1,2);
}
function add(a,b){
    document.write(a+b);
}
func1(add);

閉包函數是函數套函數,里面的函數能訪問外層函數的值,回調函數是可以將函數作為參數傳遞並執行的
回調函數是異步調用,加快效率

表單

HTML教程提到過的

function validateForm() {
    var x = document.forms["myForm"]["fname"].value;
    if (x == null || x == "") {
        alert("需要輸入名字。");
        return false;
    }
}

調用

<form name="myForm" action="demo_form.php" onsubmit="return validateForm()" method="post">
    名字: <input type="text" name="fname">
    <input type="submit" value="提交">
    </form>
<script src="js/script.js"></script>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM