HTML與CCS(十一)

来源:https://www.cnblogs.com/x-y-j/archive/2018/03/16/8583089.html
-Advertisement-
Play Games

1.1 HTML介紹 1.1.1 Web服務本質 import socket sk = socket.socket() sk.bind(("127.0.0.1", 8080)) sk.listen(5) while True: conn, addr = sk.accept() data = conn ...


1.1 HTML介紹

1.1.1 Web服務本質

import socket

 

 

sk = socket.socket()

 

sk.bind(("127.0.0.1", 8080))

sk.listen(5)

 

 

while True:

    conn, addr = sk.accept()

    data = conn.recv(8096)

    conn.send(b"HTTP/1.1 200 OK\r\n\r\n")

    conn.secd(b"<h1>Hello world!</h1>")

    conn.close()

 

瀏覽器發請求 --> HTTP協議 --> 服務端接收請求 --> 服務端返迴響應 --> 服務端把HTML文件內容發給瀏覽器 --> 瀏覽器渲染頁面

 

1.1.2 HTML是什麼

超文本標記語言(Hypertext Markup Language, HTML)是一種用於創建網頁的標記語言。

本質上是瀏覽器可識別的規則,我們按照規則寫網頁,瀏覽器根據規則渲染我們的網頁。對於不同的瀏覽器,對同一個標簽可能會有不同的解釋。(相容性問題)

網頁文件的擴展名:.html或.htm

HTML是一種標記語言(markup language),它不是一種編程語言。HTML使用標簽來描述網頁。

1.2 HTML文檔結構

<!DOCTYPE html>

<html lang="zh-CN">

<head>

  <meta charset="UTF-8">

  <title>css樣式優先順序</title>

</head>

<body>

 

</body>

</html>

 

  • <!DOCTYPE html>聲明為HTML5文檔。
  • <html>、</html>是文檔的開始標記和結束的標記。是HTML頁面的根元素,在它們之間是文檔的頭部(head)和主體(body)。
  • <head>、</head>定義了HTML文檔的開頭部分。它們之間的內容不會在瀏覽器的文檔視窗顯示。包含了文檔的元(meta)數據。
  • <title>、</title>定義了網頁標題,在瀏覽器標題欄顯示。
  • <body>、</body>之間的文本是可見的網頁主體內容。

註意:對於中文網頁需要使用 <meta charset="utf-8"> 聲明編碼,否則會出現亂碼。有些瀏覽器會設置 GBK 為預設編碼,則你需要設置為 <meta charset="gbk">。

 

1.2.1 HTML標簽格式

  • HTML標簽是由尖括弧包圍的關鍵字,如<html>, <div>等
  • HTML標簽通常是成對出現的,比如:<div>和</div>,第一個標簽是開始,第二個標簽是結束。結束標簽會有斜線。
  • 也有一部分標簽是單獨呈現的,比如:<br/>、<hr/>、<img src="1.jpg" />等。
  • 標簽裡面可以有若幹屬性,也可以不帶屬性。

 

標簽的語法:

<標簽名 屬性1=“屬性值1” 屬性2=“屬性值2”……>內容部分</標簽名>

<標簽名 屬性1=“屬性值1” 屬性2=“屬性值2”…… />

幾個很重要的屬性:

id:定義標簽的唯一ID,HTML文檔樹中唯一

class:為html元素定義一個或多個類名(classname)(CSS樣式類名)

style:規定元素的行內樣式(CSS樣式)

 

1.2.2 HTML註釋

<!--註釋內容-->

 

 

1.2.3 <!DOCTYPE> 標簽

<!DOCTYPE> 聲明必須是 HTML 文檔的第一行,位於 <html> 標簽之前。

<!DOCTYPE> 聲明不是 HTML 標簽;它是指示 web 瀏覽器關於頁面使用哪個 HTML 版本進行編寫的指令。

 

1.3 HTML常用標簽

1.3.1 head內常用標簽

 

 

圖1-1  

1.3.1.1  Meta標簽

  • meta標簽介紹:
  • <meta>元素可提供有關頁面的原信息(mata-information),針對搜索引擎和更新頻度的描述和關鍵詞。
  • <meta>標簽位於文檔的頭部,不包含任何內容。
  • <meta>提供的信息是用戶不可見的。

meta標簽的組成:meta標簽共有兩個屬性,它們分別是http-equiv屬性和name 屬性,不同的屬性又有不同的參數值,這些不同的參數值就實現了不同的網頁功能。

1.http-equiv屬性:相當於http的文件頭作用,它可以向瀏覽器傳回一些有用的信息,以幫助正確地顯示網頁內容,與之對應的屬性值為content,content中的內容其實就是各個參數的變數值。

<!--2秒後跳轉到對應的網址,註意引號-->

<meta http-equiv="refresh" content="2;URL=https://www.oldboyedu.com">

 

<!--指定文檔的編碼類型-->

<meta http-equiv="content-Type" charset=UTF8">

 

<!--告訴IE以最高級模式渲染文檔-->

<meta http-equiv="x-ua-compatible" content="IE=edge">

 

2.name屬性: 主要用於描述網頁,與之對應的屬性值為content,content中的內容主要是便於搜索引擎機器人查找信息和分類信息用的。

<meta name="keywords" content="meta總結,html meta,meta屬性,meta跳轉">
<meta name="description" content="老男孩教育Python學院">

 

 

1.3.2 body內常用標簽

1.3.2.1  基本標簽(塊級標簽和內聯標簽)

<b>加粗</b>

<i>斜體</i>

<u>下劃線</u>

<s>刪除</s>

 

<p>段落標簽</p>

 

<h1>標題1</h1>

<h2>標題2</h2>

<h3>標題3</h3>

<h4>標題4</h4>

<h5>標題5</h5>

<h6>標題6</h6>

 

<!--換行-->

<br>

 

<!--水平線--><hr>

 

 

1.3.2.2  特殊字元

 

 

圖1-2  

 

1.3.2.3  div標簽和span標簽

l  div標簽用來定義一個塊級元素,並無實際的意義。主要通過CSS樣式為其賦予不同的表現。

l  span標簽用來定義內聯(行內)元素,並無實際的意義。主要通過CSS樣式為其賦予不同的表現。

塊級元素與行內元素的區別:

所謂塊元素,是以另起一行開始渲染的元素,行內元素則不需另起一行。如果單獨在網頁中插入這兩個元素,不會對頁面產生任何的影響。

這兩個元素是專門為定義CSS樣式而生的。

註意:

關於標簽嵌套:通常塊級元素可以包含內聯元素或某些塊級元素,但內聯元素不能包含塊級元素,它只能包含其它內聯元素。

註意:p標簽不能包含塊級標簽。

 

1.3.2.4  img標簽

<img src="圖片的路徑" alt="圖片未載入成功時的提示" title="滑鼠懸浮時提示信息" width="" height="高(寬高兩個屬性只用一個會自動等比縮放)">

 

 

1.3.2.5  a標簽

超鏈接標簽

所謂的超鏈接是指從一個網頁指向一個目標的連接關係,這個目標可以是另一個網頁,也可以是相同網頁上的不同位置,還可以是一個圖片,一個電子郵件地址,一個文件,甚至是一個應用程式。

 

關於URL

URL是統一資源定位器(Uniform Resource Locator)的縮寫,也被稱為網頁地址,是網際網路上標準的資源的地址。

URL地址由4部分組成

第1部分:為協議:http://、ftp://等

第2部分:為站點地址:可以是功能變數名稱或IP地址

第3部分:為頁面在站點中的目錄:stu

第4部分:為頁面名稱,例如 index.html

各部分之間用“/”符號隔開。

<a href="http://www.oldboyedu.com" target="_blank" >點我</a>

 

href屬性指定目標網頁地址。該地址可以有幾種類型:

l  絕對URL - 指向另一個站點(比如 href="http://www.jd.com)

l  相對URL - 指當前站點中確切的路徑(href="index.htm")

l  錨URL - 指向頁面中的錨(href="#top")

 

target:

l  _blank表示在新標簽頁中打開目標網頁

l  _self表示在當前標簽頁中打開目標網頁

 

1.3.2.6  列表

無序列表

<ul type="disc">

  <li>第一項</li>

  <li>第二項</li>

</ul>

 

type屬性:

l  disc(實心圓點,預設值)

l  circle(空心圓圈)

l  square(實心方塊)

l  none(無樣式)

 

有序列表

<ol type="1" start="2">

  <li>第一項</li>

  <li>第二項</li>

</ol>

  

type屬性:

l  1 數字列表,預設值

l  A 大寫字母

l  a 小寫字母

l  Ⅰ大寫羅馬

l  ⅰ小寫羅馬

 

1.3.2.7  標題列表

<dl>

  <dt>標題1</dt>

  <dd>內容1</dd>

  <dt>標題2</dt>

  <dd>內容1</dd>

  <dd>內容2</dd>

</dl>

  

 

1.3.2.8  表格

表格是一個二維數據空間,一個表格由若幹行組成,一個行又有若幹單元格組成,單元格裡可以包含文字、列表、圖案、表單、數字元號、預置文本和其它的表格等內容。

表格最重要的目的是顯示表格類數據。表格類數據是指最適合組織為表格格式(即按行和列組織)的數據。

表格的基本結構:

<table>

  <thead>

  <tr>

    <th>序號</th>

    <th>姓名</th>

    <th>愛好</th>

  </tr>

  </thead>

  <tbody>

  <tr>

    <td>1</td>

    <td>Egon</td>

    <td>杠娘</td>

  </tr>

  <tr>

    <td>2</td>

    <td>Yuan</td>

    <td>日天</td>

  </tr>

  </tbody>

</table>

  

屬性:

l  border: 表格邊框.

l  cellpadding: 內邊距

l  cellspacing: 外邊距.

l  width: 像素 百分比.(最好通過css來設置長寬)

l  rowspan: 單元格豎跨多少行

l  colspan: 單元格橫跨多少列(即合併單元格)

1.3.2.9  form

功能:

表單用於向伺服器傳輸數據,從而實現用戶與Web伺服器的交互

表單能夠包含input系列標簽,比如文本欄位、覆選框、單選框、提交按鈕等等。

表單還可以包含textarea、select、fieldset和 label標簽。

表單屬性

 

 

圖1-3  

表單元素

基本概念:

HTML表單是HTML元素中較為複雜的部分,表單往往和腳本、動態頁面、數據處理等功能相結合,因此它是製作動態網站很重要的內容。

表單一般用來收集用戶的輸入信息

表單工作原理:

訪問者在瀏覽有表單的網頁時,可填寫必需的信息,然後按某個按鈕提交。這些信息通過Internet傳送到伺服器上。

伺服器上專門的程式對這些數據進行處理,如果有錯誤會返回錯誤信息,並要求糾正錯誤。當數據完整無誤後,伺服器反饋一個輸入完成的信息。

from django.conf.urls import url

from django.shortcuts import HttpResponse

 

 

def upload(request):

    print("request.GET:", request.GET)

    print("request.POST:", request.POST)

 

    if request.FILES:

        filename = request.FILES["file"].name

        with open(filename, 'wb') as f:

            for chunk in request.FILES['file'].chunks():

                f.write(chunk)

            return HttpResponse('上傳成功')

    return HttpResponse("收到了!")

 

urlpatterns = [

    url(r'^upload/', upload),

]

  

 

1.3.2.10  input

<input> 元素會根據不同的 type 屬性,變化為多種形態。

 

 

圖1-4  

屬性說明:

l  name:表單提交時的“鍵”,註意和id的區別

l  value:表單提交時對應項的值

l  type="button", "reset", "submit"時,為按鈕上顯示的文本年內容

l  type="text","password","hidden"時,為輸入框的初始值

l  type="checkbox", "radio", "file",為輸入相關聯的值

l  checked:radio和checkbox預設被選中的項

l  readonly:text和password設置只讀

l  disabled:所有input均適用

 

1.3.2.11  select標簽

<form action="" method="post">

  <select name="city" id="city">

    <option value="1">北京</option>

    <option selected="selected" value="2">上海</option>

    <option value="3">廣州</option>

    <option value="4">深圳</option>

  </select>

</form>

  

屬性說明:

 

l  multiple:布爾屬性,設置後為多選,否則預設單選

l  disabled:禁用

l  selected:預設選中該項

l  value:定義提交時的選項值

 

1.3.2.12  label標簽

定義:<label> 標簽為 input 元素定義標註(標記)。

說明:

label 元素不會向用戶呈現任何特殊效果。

<label> 標簽的 for 屬性值應當與相關元素的 id 屬性值相同。

<form action="">

  <label for="username">用戶名</label>

  <input type="text" id="username" name="username">

</form>

 

 

1.3.2.13  textarea多行文本

<textarea name="memo" id="memo" cols="30" rows="10">

  預設內容

</textarea>

  

屬性說明:

l  name:名稱

l  rows:行數

l  cols:列數

l  disabled:禁用

 

1.4 CSS介紹

CSS(Cascading Style Sheet,層疊樣式表)定義如何顯示HTML元素。

當瀏覽器讀到一個樣式表,它就會按照這個樣式表來對文檔進行格式化(渲染)。

 

1.5 CSS語法

每個CSS樣式由兩個組成部分:選擇器和聲明。聲明又包括屬性和屬性值。每個聲明之後用分號結束。

 

 

圖1-5  

1.6 CSS註釋

/*這是註釋*/

 

 

1.7 CSS的幾種引入方式

CSS的幾種引入方式

1.7.1 行內樣式

行內式是在標記的style屬性中設定CSS樣式。不推薦大規模使用。

<p style="color: red">Hello world.</p>

  

1.7.2 內部樣式

嵌入式是將CSS樣式集中寫在網頁的<head></head>標簽對的<style></style>標簽對中。格式如下:

<head>

    <meta charset="UTF-8">

    <title>Title</title>

    <style>

        p{

            background-color: #2b99ff;

        }

    </style>

</head>

  

 

1.7.3 外部樣式

外部樣式就是將css寫在一個單獨的文件中,然後在頁面進行引入即可。推薦使用此方式。

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

 

1.8 CSS選擇器

1.8.1 基本選擇器

1.8.1.1  元素選擇器

p {color: "red";}

 

1.8.1.2  ID選擇器

#i1 {

  background-color: red;

}

  

1.8.1.3  類選擇器

.c1 {

  font-size: 14px;

}

p.c1 {

  color: red;

}

  

註意:

樣式類名不要用數字開頭(有的瀏覽器不認)。

標簽中的class屬性如果有多個,要用空格分隔。

1.8.1.4  通用選擇器

* {

  color: white;

}

  

 

1.8.2 組合選擇器

1.8.2.1  後代選擇器

/*li內部的a標簽設置字體顏色*/

li a {

  color: green;

}

  

1.8.2.2  兒子選擇器

/*選擇所有父級是 <div> 元素的 <p> 元素*/

div>p {

  font-family: "Arial Black", arial-black, cursive;

}

  

1.8.2.3  毗鄰選擇器

/*選擇所有緊接著<div>元素之後的<p>元素*/

div+p {

  margin: 5px;

}

  

1.8.2.4  弟弟選擇器

/*i1後面所有的兄弟p標簽*/

#i1~p {

  border: 2px solid royalblue;

}

  

 

1.8.3 屬性選擇器

1.8.3.1  常用的屬性選擇器

/*用於選取帶有指定屬性的元素。*/

p[title] {

  color: red;

}

  

/*用於選取帶有指定屬性和值的元素。*/

p[title="213"] {

  color: green;

}

 

1.8.3.2  不怎麼常用的屬性選擇器

/*找到所有title屬性以hello開頭的元素*/

[title^="hello"] {

  color: red;

}

 

  

/*找到所有title屬性以hello結尾的元素*/

[title$="hello"] {

  color: yellow;

}

 

 

/*找到所有title屬性中包含(字元串包含)hello的元素*/

[title*="hello"] {

  color: red;

}

 

/*找到所有title屬性(有多個值或值以空格分割)中有一個值為hello的元素:*/

[title~="hello"] {

  color: green;

}

 

 

1.8.4 分組和嵌套

1.8.4.1  分組

當多個元素的樣式相同的時候,我們沒有必要重覆地為每個元素都設置樣式,我們可以通過在多個選擇器之間使用逗號分隔的分組選擇器來統一設置元素樣式。

 

例如:

div, p {

  color: red;

}

 

上面的代碼為div標簽和p標簽統一設置字體為紅色。

 

通常,我們會分兩行來寫,更清晰:

div,

p {

  color: red;

}

  

1.8.4.2  嵌套

多種選擇器可以混合起來使用,比如:.c1類內部所有p標簽設置字體顏色為紅色。

 

.c1 p {

  color: red;

}

  

 

1.8.5 偽類選擇器

/* 未訪問的鏈接 */

a:link {

  color: #FF0000

}

 

/* 已訪問的鏈接 */

a:visited {

  color: #00FF00

}

 

/* 滑鼠移動到鏈接上 */

a:hover {

  color: #FF00FF

}

 

/* 選定的鏈接 */

a:active {

  color: #0000FF

}

 

/*input輸入框獲取焦點時樣式*/

input:focus {

  outline: none;

  background-color: #eee;

}

  

1.8.6 偽元素選擇器

1.8.6.1  first-letter

常用的給首字母設置特殊樣式:

 

p:first-letter {

  font-size: 48px;

  color: red;

}

  

1.8.6.2  before

/*在每個<p>元素之前插入內容*/

p:before {

  content:"*";

  color:red;

}

  

1.8.6.3  after

/*在每個<p>元素之後插入內容*/

p:after {

  content:"[?]";

  color:blue;

}

  

before和after多用於清除浮動。

 

1.8.7 選擇器的優先順序

1.8.7.1  CSS繼承

繼承是CSS的一個主要特征,它是依賴於祖先-後代的關係的。繼承是一種機制,它允許樣式不僅可以應用於某個特定的元素,還可以應用於它的後代。例如一個body定義了的字體顏色值也會應用到段落的文本中。

body {

  color: red;

}

  

此時頁面上所有標簽都會繼承body的字體顏色。然而CSS繼承性的權重是非常低的,是比普通元素的權重還要低的0。

 

我們只要給對應的標簽設置字體顏色就可覆蓋掉它繼承的樣式。

p {

  color: green;

}

  

此外,繼承是CSS重要的一部分,我們甚至不用去考慮它為什麼能夠這樣,但CSS繼承也是有限制的。有一些屬性不能被繼承,如:border, margin, padding, background等。

 

1.8.7.2  選擇器的優先順序

我們上面學了很多的選擇器,也就是說在一個HTML頁面中有很多種方式找到一個元素並且為其設置樣式,那瀏覽器根據什麼來決定應該應用哪個樣式呢?

其實是按照不同選擇器的權重來決定的,具體的選擇器權重計算方式如下圖:

 

圖1-6  

除此之外還可以通過添加 !import方式來強制讓樣式生效,但並不推薦使用。因為如果過多的使用!import會使樣式文件混亂不易維護。

註意:萬不得已可以使用!import,儘量不用!

 

1.9 CSS屬性相關

1.9.1 字體屬性

1.9.1.1  文字字體

font-family可以把多個字體名稱作為一個“回退”系統來保存。如果瀏覽器不支持第一個字體,則會嘗試下一個。瀏覽器會使用它可識別的第一個值。

 

簡單實例:

body {

  font-family: "Microsoft Yahei", "微軟雅黑", "Arial", sans-serif

}

  

1.9.1.2  字體大小

p {

  font-size: 14px;

}

  

如果設置成inherit表示繼承父元素的字體大小值。

 

1.9.1.3  字重(粗細)

font-weight用來設置字體的字重(粗細)。

p {

  font-size: 14px;

}

  

 

 

圖1-7  

1.9.1.4  文本顏色

顏色屬性被用來設置文字的顏色。

顏色是通過CSS最經常的指定:

十六進位值 - 如: #FF0000

一個RGB值 - 如: RGB(255,0,0)

顏色的名稱 - 如:  red

還有rgba(255,0,0,0.3),第四個值為alpha, 指定了色彩的透明度/不透明度,它的範圍為0.0到1.0之間。

 

1.9.2 文字屬性

1.9.2.1  文字對齊

text-align 屬性規定元素中的文本的水平對齊方式。

 

 

圖1-8  

 

1.9.2.2  文字裝飾

ext-decoration 屬性用來給文字添加特殊效果。

 

 

圖1-9  

常用的為去掉a標簽預設的自劃線:

a {

  text-decoration: none;

}

  

 

1.9.2.3  首行縮進

將段落的第一行縮進 32像素:

p {

  text-indent: 32px;

}

  

1.9.3 背景屬性

/*背景顏色*/

background-color: red;

/*背景圖片*/

background-image: url('1.jpg');

/*

 背景重覆

 repeat(預設):背景圖片平鋪排滿整個網頁

 repeat-x:背景圖片只在水平方向上平鋪

 repeat-y:背景圖片只在垂直方向上平鋪

 no-repeat:背景圖片不平鋪

*/

background-repeat: no-repeat;

/*背景位置*/

background-position: right top(20px 20px);

  

支持簡寫:

background:#ffffff url('1.png') no-repeat right top;

  

使用背景圖片的一個常見案例就是很多網站會把很多小圖標放在一張圖片上,然後根據位置去顯示圖片。減少頻繁的圖片請求。

參考鏈接:http://www.w3school.com.cn/css/css_background.asp

例子:

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <meta http-equiv="X-UA-Compatible" content="ie=edge">

    <title>滾動背景圖示例</title>

    <style>

        * {

            margin: 0;

        }

        .box {

            width: 100%;

            height: 500px;

            background: url("https://www.luffycity.com/static/img/width-bank.1c9d1b0.png") no-repeat center center;

            background-attachment: fixed;

        }

        .d1 {

            height: 500px;

            background-color: tomato;

        }

        .d2 {

            height: 500px;

            background-color: steelblue;

        }

        .d3 {

            height: 500px;

            background-color: mediumorchid;

        }

    </style>

</head>

<body>

    <div class="d1"></div>

    <div class="box"></div>

    <div class="d2"></div>

    <div class="d3"></div>

</body>

</html>

  

 

1.9.4 邊框

邊框屬性

 

l  border-width

l  border-style

l  border-color

#i1 {

  border-width: 2px;

  border-style: solid;

  border-color: red;

}

  

通常使用簡寫方式:

#i1 {

  border: 2px solid red;

}

  

邊框樣式

 

 

圖1-10  

除了可以統一設置邊框外還可以單獨為某一個邊框設置樣式,如下所示:

#i1 {

  border-top-style:dotted;

  border-top-color: red;

  border-right-style:solid;

  border-bottom-style:dotted;

  border-left-style:none;

}

 

  

1.9.5 border-radius

用這個屬性能實現圓角邊框的效果。

將border-radius設置為長或高的一半即可得到一個圓形。

 

1.9.6 display屬性

用於控制HTML元素的顯示效果。

 

 

圖1-11  

1.9.6.1  display:"none"與visibility:hidden的區別:

visibility:hidden: 可以隱藏某個元素,但隱藏的元素仍需占用與未隱藏之前一樣的空間。也就是說,該元素雖然被隱藏了,但仍然會影響佈局。

display:none: 可以隱藏某個元素,且隱藏的元素不會占用任何空間。也就是說,該元素不但被隱藏了,而且該元素原本占用的空間也會從頁面佈局中消失。

 

1.9.7 CSS盒子模型

l  margin:            用於控制元素與元素之間的距離;margin的最基本用途就是控制元素周圍空間的間隔,從視覺角度上達到相互隔開的目的。

l  padding:           用於控制內容與邊框之間的距離;  

l  Border(邊框):     圍繞在內邊距和內容外的邊框。

l  Content(內容):   盒子的內容,顯示文本和圖像。

 

 

圖1-12  

1.9.7.1  margin外邊距

.margin-test {

  margin-top:5px;

  margin-right:10px;

  margin-bottom:15px;

  margin-left:20px;

}

  

推薦使用簡寫:

.margin-test {

  margin: 5px 10px 15px 20px;

}

  

順序:上右下左

 

1.9.7.2  常見居中:

.mycenter {

  margin: 0 auto;

}

  

1.9.7.3  padding內填充

.padding-test {

  padding-top: 5px;

  padding-right: 10px;

  padding-bottom: 15px;

  padding-left: 20px;

}

  

推薦使用簡寫:

.padding-test {

  padding: 5px 10px 15px 20px;

}

  

順序:上右下左

補充padding的常用簡寫方式:

提供一個,用於四邊;

l  提供兩個,第一個用於上-下,第二個用於左-右;

l  如果提供三個,第一個用於上,第二個用於左-右,第三個用於下;

l  提供四個參數值,將按上-右-下-左的順序作用於四邊;

1.9.7.4  float

在 CSS 中,任何元素都可以浮動。

浮動元素會生成一個塊級框,而不論它本身是何種元素。

關於浮動的兩個特點:

l  浮動的框可以向左或向右移動,直到它的外邊緣碰到包含框或另一個浮動框的邊框為止。

l  由於浮動框不在文檔的普通流中,所以文檔的普通流中的塊框表現得就像浮動框不存在一樣。

三種取值

left:向左浮動

right:向右浮動

none:預設值,不浮動

參考鏈接:http://www.w3school.com.cn/css/css_positioning_floating.asp

1.9.7.5  clear

clear屬性規定元素的哪一側不允許其他浮動元素。

 

 

圖1-13  

註意:clear屬性只會對自身起作用,而不會影響其他元素。

父標簽塌陷問題

.clearfix:after {

  content: "";

  display: block;

  clear: both;

}

  

 

1.9.7.6  overflow溢出屬性

 

 

圖1-14  

l  overflow(水平和垂直均設置)

l  overflow-x(設置水平方向)

l  overflow-y(設置垂直方向)

1.10 定位(position)

1.10.1 static

static 預設值,無定位,不能當作絕對定位的參照物,並且設置標簽對象的left、top等值是不起作用的的。

 

1.10.2 relative(相對定位)

相對定位是相對於該元素在文檔流中的原始位置,即以自己原始位置為參照物。有趣的是,即使設定了元素的相對定位以及偏移值,元素還占有著原來的位置,即占據文檔流空間。對象遵循正常文檔流,但將依據top,right,bottom,left等屬性在正常文檔流中偏移位置。而其層疊通過z-index屬性定義。

註意:position:relative的一個主要用法:方便絕對定位元素找到參照物。

 

1.10.3 absolute(絕對定位)

定義:設置為絕對定位的元素框從文檔流完全刪除,並相對於最近的已定位祖先元素定位,如果元素沒有已定位的祖先元素,那麼它的位置相對於最初的包含塊(即body元素)。元素原先在正常文檔流中所占的空間會關閉,就好像該元素原來不存在一樣。元素定位後生成一個塊級框,而不論原來它在正常流中生成何種類型的框。

重點:如果父級設置了position屬性,例如position:relative;,那麼子元素就會以父級的左上角為原始點進行定位。這樣能很好的解決自適應網站的標簽偏離問題,即父級為自適應的,那我子元素就設置position:absolute;父元素設置position:relative;,然後Top、Right、Bottom、Left用百分比寬度表示。

 

另外,對象脫離正常文檔流,使用top,right,bottom,left等屬性進行絕對定位。而其層疊通過z-index屬性定義。

 

1.10.4 fixed(固定)

fixed:對象脫離正常文檔流,使用top,right,bottom,left等屬性以視窗為參考點進行定位,當出現滾動條時,對象不會隨著滾動。而其層疊通過z-index屬性 定義。 註意點: 一個元素若設置了 position:absolute | fixed; 則該元素就不能設置float。這 是一個常識性的知識點,因為這是兩個不同的流,一個是浮動流,另一個是“定位流”。但是 relative 卻可以。因為它原本所占的空間仍然占據文檔流。

在理論上,被設置為fixed的元素會被定位於瀏覽器視窗的一個指定坐標,不論視窗是否滾動,它都會固定在這個位置。

返回頂部按鈕樣式示例

<!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">

  <title>返回頂部示例</title>

  <style>

    * {

      margin: 0;

    }

 

    .d1 {

      height: 1000px;

      background-color: #eeee;

    }

 

    .scrollTop {

      background-color: darkgrey;

      padding: 10px;

      text-align: center;

      position: fixed;

      right: 10px;

      bottom: 20px;

    }

  </style>

</head>

<body>

<div class="d1">111</div>

<div class="scrollTop">返回頂部</div>

</body>

</html>

  

 

1.10.5 z-index

#i2 {

  z-index: 999;

}

  

設置對象的層疊順序,數值大的會覆蓋在數值小的標簽之上。z-index 僅能在定位元素上奏效。

 

自定義模態框示例

<!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">

  <title>自定義模態框</title>

  <style>

    .cover {

      background-color: rgba(0,0,0,0.65);

      position: fixed;

      top: 0;

      right: 0;

      bottom: 0;

      left: 0;

      z-index: 998;

    }

 

    .modal {

      background-color: white;

      position: fixed;

      width: 600px;

      height: 400px;

      left: 50%;

      top: 50%;

      margin: -200px 0 0 -300px;

      z-index: 1000;

    }

  </style>

</head>

<body>

 

<div class="cover"></div>

<div class="modal"></div>

</body>

</html>

  

 

1.10.6 opacity

用來定義透明效果。取值範圍是0~1,0是完全透明,1是完全不透明。

 

1.11 綜合示例

1.11.1 頂部導航菜單

<!DOCTYPE HTML>

<html>

<head>

  <meta charset="UTF-8">

  <meta http-equiv="x-ua-compatible" content="IE=edge">

  <meta name="viewport" content="width=device-width, initial-scale=1">

  <title>li標簽的float示例</title>

  <style>

    /*清除瀏覽器預設外邊距和內填充*/

    * {

      margin: 0;

      padding: 0;

    }

    a {

      text-decoration: none; /*去除a標簽預設的下劃線*/

    }

 

    .nav {

      background-color: black;

      height: 40px;

      width: 100%;

      position: fixed;

      top: 0;

    }

 

    ul {

      list-style-type: none; /*刪除列表預設的圓點樣式*/

      margin: 0; /*刪除列表預設的外邊距*/

      padding: 0; /*刪除列表預設的內填充*/

    }

    /*li元素向左浮動*/

    li {

      float: left;

    }

 

    li > a {

      display: block; /*讓鏈接顯示為塊級標簽*/

      padding: 0 15px; /*設置左右各15像素的填充*/

      color: #b0b0b0; /*設置字體顏色*/

      line-height: 40px; /*設置行高*/

    }

    /*滑鼠移上去顏色變白*/

    li > a:hover {

      color: #fff;

    }

 

    /*清除浮動 解決父級塌陷問題*/

    .clearfix:after {

      content: "";

      display: block;

      clear: both;

    }

  </style>

</head>

<body>

<!-- 頂部導航欄 開始 -->

<div class="nav">

  <ul class="clearfix">

    <li><a href="">玉米商城</a></li>

    <li><a href="">MIUI</a></li>

    <li><a href="">ioT</a></li>

    <li><a href="">雲服務</a></li>

    <li><a href="">水滴</a></li>

    <li><a href="">金融</a></li>

    <li><a href="">優品</a></li>

  </ul>

</div>

<!-- 頂部導航欄 結束 -->

</body>

</html>

  

 

1.11.2 圓形頭像

<!DOCTYPE HTML>

<html>

<head>

  <meta charset="UTF-8">

  <meta http-equiv="x-ua-compatible" content="IE=edge">

  <meta name="viewport" content="width=device-width, initial-scale=1">

  <title>圓形的頭像示例</title>

  <style>

    * {

      margin: 0;

      padding: 0;

      background-color: #eeeeee;

    }

    .header-img {

      width: 150px;

      height: 150px;

      border: 3px solid white;

      border-radius: 100%;

      overflow: hidden;

    }

    .header-img>img {

      max-width: 100%;

    }

  </style>

</head>

<body>

 

<div class="header-img">

  <img src="https://q1mi.github.io/Blog/asset/img/head_img.jpg" alt="">

</div>

 

</body>

</html>

  


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 使用方式簡介 mui 列表頁使用的是 mui的插件實現的上拉載入下拉刷新,但是從詳情頁回到列表頁時 不能回到之前的位置。所以想到了使用緩存。 第一次和第二次的試驗是失敗的。失敗後,就想用其他辦法來解決這個問題。所以試驗了WeUi+mui,WeUI+listloading.js 以及純WeUi。 發現 ...
  • 整理自官網教程 -- https://cn.vuejs.org/ 1. 所有Vue組件同時也都是Vue實例,分為全局組件和局部組件,註冊方式如下。 註意: a. 如<ul>、<table>和<li>、<tr>等父子元素有限制的元素,不能直接使用組件模板,可由is屬性來指定,如<tr is="my-r ...
  • 導航欄: 1 <nav class="navbar navbar-inverse navbar-fixed-top"> 2 <div class="container-fluid"> 3 <div class="navbar-header"> 4 <button type="button" clas ...
  • 一、javascript的三大核心 1.ECMAScript js的語法標準 2.DOM Document object Model 文檔對象模型,提供的方法可以讓js操作html標簽 3.BOM Browser Object Model 瀏覽器對象模型,提供的方法讓js可以操作瀏覽器 註意:1. ...
  • Promise的基礎我就不說了,我更加關心的是Promise能帶給我什麼便利?這也是本文的內容所在。 Promise.all 併發執行多個非同步方法,統一返回結果,結果按照參數的順序返回。 上面的這個方法能夠很好的看出Promise.all的執行方式,Promise.all的作用是顯而易見的,比如我的 ...
  • 問題 在寫flatlist復用組件時,調用的時候如果父組件是不定高的組件,會造成組件無法顯示 如果父組件樣式{flex:1},則會出現下拉方法頻繁觸發或不正常觸發的問題(我這裡出現的問題是在列表第6個項目在底部時,緩慢上拉會多次觸發flatlist的onEndReached監聽) 原因 推測是因為{ ...
  • 本文將介紹Angular(Angular2+)中Reactive Form的有關內容,包括: Reactive Form創建方法 如何使用驗證 自定義驗證器 下麵開始進入正文! Reactive Form創建方法 首先我們需要使用FormBuilder創建一個FormGroup,就像這樣: 上面的 ...
  • BEM的意思就是塊(block)、元素(element)、修飾符(modifier),是由Yandex團隊提出的一種前端命名方法論。這種巧妙的命名方法讓你的CSS類對其他開發者來說更加透明而且更有意義。BEM命名約定更加嚴格,而且包含更多的信息,它們用於一個團隊開發一個耗時的大項目。 重要的是要註意 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...