搜尋
首頁web前端html教學HTML和CSS重點困難問題

HTML和CSS重點困難問題

Feb 28, 2018 am 11:14 AM
csshtml

本文主要和大家分享HTML和CSS重點難點問題,希望能幫助大家。

1.怎麼讓不定寬高的p,垂直水平居中?

使用Flex

#只需要在父盒子設定:display: flex; justify-content: center;align-items: center;
使用CSS3 transform

父盒子設定:display:relative
p 設定: transform: translate(- 50%,-50%);position: absolute;top: 50%;left: 50%;
使用display:table-cell 方法

父盒子設定:display:table-cell; text- align:center;vertical-align:middle;
p 設定: display:inline-block;vertical-align:middle;
2.position 幾個屬性的作用

position 的常見四個屬性值: relative,absolute,fixed,static。一般都要配合”left”、“top”、“right” 以及 “bottom” 屬性使用。

static:預設位置。 在一般情況下,我們不需要特別的去聲明它,但有時候遇到繼承的情況,我們不願意見到元素所繼承的屬性影響本身,從而可以用Position:static取消繼承,即還原元素定位的預設值。設定為 static 的元素,它總是會處於頁面流給予的位置(static 元素會忽略任何 top、 bottom、left 或 right 宣告)。一般不常用。
relative:相對定位。 相對定位是相對於元素預設的位置的定位,它偏移的 top,right,bottom,left 的值都以它原來的位置為基準偏移,而不管其他元素會怎麼樣。注意 relative 移動後的元素在原來的位置仍佔據空間。
absolute:絕對定位。 設定為 absolute 的元素,如果它的 父容器設定了 position 屬性,並且 position 的屬性值為 absolute 或 relative,那麼就會依據父容器進行偏移。如果其父容器沒有設定 position 屬性,那麼偏移是以 body 為依據。注意設定 absolute 屬性的元素在標準流中不佔位置。
fixed:固定定位。 位置被設定為 fixed 的元素,可定位於相對於瀏覽器視窗的指定座標。不論窗口滾動與否,元素都會留在那個位置。它總是以 body 為依據的。 注意設定 fixed 屬性的元素在標準流中不佔位置。
3.浮動與清除浮動

3.1 浮動相關知識

float屬性的取值:

left:元素向左浮動。
right:元素向右浮動。
none:預設值。元素不浮動,並會顯示在文字中出現的位置。
浮動的特性:

浮動元素會從普通文件流中脫離,但浮動元素影響的不僅是自己,它會影響周圍的元素對齊進行環繞。
不管一個元素是行內元素還是區塊級元素,如果被設定了浮動,那麼浮動元素會產生一個區塊級框,可以設定它的width和height,因此float常常用於製作橫向配列的選單,可以設定大小並且橫向排列。
浮動元素的展示在不同情況下會有不同的規則:

浮動元素在浮動的時候,其margin不會超過包含區塊的padding。 PS:如果想要元素超出,可以設定margin屬性
如果兩個元素一個向左浮動,一個向右浮動,左浮動元素的marginRight不會和右浮動元素的marginLeft相鄰。
如果有多個浮動元素,浮動元素會依序排下來而不會發生重疊的現象。
如果有多個浮動元素,後面的元素高度不會超過前面的元素,並且不會超過包含區塊。
如果有非浮動元素和浮動元素同時存在,並且非浮動元素在前,則浮動元素不會高於非浮動元素
浮動元素會盡可能地向頂端對齊、向左或向右對齊
重疊問題

行內元素與浮動元素重疊,其邊框,背景和內容都會顯示在浮動元素之上
區塊級元素與浮動元素發生重疊時,邊框和背景會顯示在浮動元素之下,內容會顯示在浮動元素之上
clear屬性
clear屬性:確保目前元素的左右兩側不會有浮動元素。 clear只對元素本身的佈局運作。
取值:left、right、both

3.2 父元素高度塌陷問題

為什麼要清除浮動,父元素高度塌陷
解決父元素高度塌陷問題:一個區塊級元素如果沒有設定height,其height是由子元素撐開的。對子元素使用了浮動之後,子元素會脫離標準文檔流,也就是說,父級元素中沒有內容可以撐開其高度,這樣父級元素的height就會被忽略,這就是所謂的高度塌陷。

3.3 清除浮動的方法

方法1:給父級p定義高度
原理:給父級p定義固定高度(height),能解決父級p 無法取得高度得問題。
優點:程式碼簡潔
缺點:高度被固定死了,是適合內容固定不變的模組。 (不建議使用)

方法二:使用空元素,如


(.clear{clear:both})
原理:新增一對空的p標籤,利用css的clear:both屬性清除浮動,讓父級p能取得高度。
優點:瀏覽器支援好
缺點:多出了很多空的p標籤,如果頁面中浮動模組多的話,就會出現很多的空置p了,這樣感覺視乎不是太令人滿意。 (不建議使用)

方法三:讓父級p 也一併浮起來
這樣做可以初步解決當前的浮動問題。但也讓父級浮動了,又會產生新的浮動問題。 不建議使用

方法四:父級p定義 display:table
原則:將p屬性強制變成表格
優點:不解
缺點:會產生新的未知問題。 (不建議使用)

方法五:父元素設定 overflow:hidden、auto;
原則:這個方法的關鍵在於觸發了BFC。在IE6中還需要觸發hasLayout(zoom:1)
優點:程式碼簡介,不存在結構和語義化問題
缺點:無法顯示需要溢出的元素(也不太建議使用)

方法六:父級p定義偽類別:after 和zoom

.clearfix:after{
   content:’.’;
   display:block;
   height:0;
   clear:both;
visibility: hidden;
}
.clearfix {zoom:1;}
原理:IE8以上和非IE瀏覽器才支援:after,原理和方法2有點類似,zoom(IE轉有屬性)可解決ie6,ie7浮動問題
優點:結構和語意化完全正確,程式碼量也適中,可重複使用率(建議定義公共類別)
缺點:程式碼不是非常簡潔(極力推薦使用)

經益求精寫法

.clearfix:after {
   content:”\200B”;  
#    display:block;  
   height:0;  
#    clear:both;
}
.clearfix { *zoom:1; } 照顧IE6,IE7就可以了
詳細關於浮動的知識請參考這篇文章:
http://luopq.com/2015/11/08/C…

4.BFC 相關知識










#定義:BFC(Block formatting context)直譯為」區塊層級格式化上下文」。它是一個獨立的渲染區域,只有 Block-level box 參 與, 它規定了內部的 Block-level Box 如何佈局,並且與這個區域外部毫不相干。

BFC佈局規則

BFC 是頁面上的一個隔離的獨立容器,容器裡面的子元素不會影響到外面的元素。反之也如此。

BFC這個元素的垂直方向的邊距會重疊,垂直方向的距離由margin決定,取最大值
BFC 的區域不會與浮動盒子重疊(清除浮動原理)。 計算 BFC 的高度時,浮動元素也參與計算。 哪些元素會產生BFC

根元素
float 屬性不為none
position 為absolute 或fixed

display 為inline-block,table-cell,table-caption,flex , inline-flex

overflow 不為visible 5.box-sizing是什麼


設定CSS盒模型為標準模型或IE模型。標準模型的寬度只包括content,二IE模型包含border和padding

box-sizing屬性可以是三個值之一:


content-box,預設值,只計算內容的寬度,border和padding不計算入width之內
padding-box,padding計算入寬度內
border-box,border和padding計算入寬度之內
6.px,em,rem 的區別

###px 像素(Pixel)。絕對單位。像素 px 是相對於顯示器螢幕解析度而言的,是一個虛擬長度單位,是計算 機器系統的數位化影像長度單位,如果 px 要換算成物理長度,需要指定精度 DPI。 ###em 是相對長度單位,相對於目前物件內文字的字體尺寸。如目前對行內文字的字體尺寸未被人為設置, 則相對於瀏覽器的預設字體尺寸。它會繼承父級元素的字體大小,因此並不是固定的值。 ###rem 是 CSS3 新增的一個相對單位(root em,根 em),使用 rem 為元素設定字體大小時,仍然是相對大小, 但相對的只是 HTML 根元素。 #########7.CSS 引入的方式有哪些? link 和@import 的區別是?#########有四種:內聯(元素上的style屬性)、內嵌(style標籤)、外鏈(link)、導入(@import) ###link和@import的區別:######link是XHTML標籤,除了載入CSS外,還可以定義RSS等其他事務;@import屬於CSS範疇,只能載入CSS。 ###link引用CSS時,在頁面載入時同時載入;@import需要頁面網頁完全載入以後載入。 ###link是XHTML標籤,無相容問題;@import是在CSS2.1提出的,低版本的瀏覽器不支援。 ###link支援使用Javascript控制DOM去改變樣式;而@import不支援。 ######8.串流佈局與響應式佈局的差異#######

串流佈局
使用非固定像素來定義網頁內容,也就是百分比佈局,透過盒子的寬度設定成百分比來根據螢幕的寬度來進
行伸縮,不受固定像素的限制,內容物向兩側填充。

響應式開發
利用CSS3 中的 Media Query(媒介查詢),透過查詢 screen 的寬度來指定某個寬度區間的網頁佈局。

超小螢幕(行動裝置) 768px 以下
小螢幕裝置768px-992px
中螢幕992px-1200px
寬螢幕裝置1200px 以上
由於響應式開發顯得繁瑣些,一般會使用第三方響應式框架來完成,例如bootstrap 來完成一部分工作,當然也可以自己寫回應式。

區別

  • 串流佈局   響應式發展
    開發方式   行動Web開發+PC開發   響應式開發
    應用情境   一般在已經有PC端網站,開發移動的時候只需要單獨開發移動端 針對一些新建的網站,現在要求適配移動端,所以就一套頁面兼容各種終端
    開發 正對性強,開發效率高 兼容各種終端,效率低
    適配 只適配行動設備,pad上體驗相對較差 可適配各種終端機
    效率 程式碼簡潔,載入快   程式碼相對複雜,載入慢
    9.漸進增強和優雅降級

關鍵的區別是他們所專注的內容,以及這種不同造成的工作流程的差異

優雅降級觀點認為應該針對那些最高級、最完善的瀏覽器來設計網站。
漸進增強觀點則認為應關注內容本身,並優先考慮低版本。
10.CSS隱藏元素的幾種方式及區別

display:none

#元素在頁面上將完全消失,元素本來佔有的空間就會被其他元素佔有,也是說它會導致瀏覽器的重排和重繪。
不會觸發其點擊事件
visibility:hidden

和d​​isplay:none的差別在於,元素在頁面消失後,其佔據的空間依舊會保留著,所以它只會導致瀏覽器重繪而不會重排。
無法觸發其點擊事件
適用於那些元素隱藏後不希望頁面佈局會發生變化的場景
opacity:0

將元素的透明度設為0後,在我們用戶眼中,元素也是隱藏的,這算是一種隱藏元素的方法。
和visibility:hidden的一個共同點是元素隱藏後依舊佔據著空間,但我們都知道,設定透明度為0後,元素只是隱身了,它依舊存在頁面中。
可以觸發點擊事件
設定height,width等盒模型屬性為0

簡單說就是將元素的margin,border,padding,height和width等影響元素盒模型的屬性設定成0,如果元素內有子元素或內容,也應該設定其overflow:hidden來隱藏其子元素,這算是一種奇技淫巧。
如果元素設定了border,padding等屬性不為0,很顯然,頁面上還是能看到這個元素的,觸發元素的點擊事件完全沒有問題。如果全部屬性都設為0,很顯然,這個元素相當於消失了,也就是無法觸發點擊事件。
這種方式既不實用,也可能存在著一些問題。但平常我們用到的一些頁面效果可能就是採用這種方式來完成的,例如jquery的slideUp動畫,它就是設定元素的overflow:hidden後,接著透過定時器,不斷地設定元素的height,margin-top ,margin-bottom,border-top,border-bottom,padding-top,padding-bottom為0,從而達到slideUp的效果。
其他腦洞方法

設定元素的position與left,top,bottom,right等,將元素移出至螢幕外
設定元素的position與z-index,將z-index設置成盡量小的負數。

以上是HTML和CSS重點困難問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
為什麼HTML標籤對Web開發很重要?為什麼HTML標籤對Web開發很重要?May 02, 2025 am 12:03 AM

htmltagsareessentialforwebdevelopmentastheyandendenhancewebpages.1)semantictagsimproveaccessibilityandseo.2)semanteLayOut,語義和互動性。 3)poseriblesibilityandseoandseo.3)poseriblesoftagscanoftagscanoftagscanoptagscanoptimizeperefeneandimizeanDenSuroceRecRoscRoss-BrowserCrowserCercerComercompatibility。

說明將一致的編碼樣式用於HTML標籤和屬性的重要性。說明將一致的編碼樣式用於HTML標籤和屬性的重要性。May 01, 2025 am 12:01 AM

一致的HTML編碼風格很重要,因為它提高了代碼的可讀性、可維護性和效率。 1)使用小寫標籤和屬性,2)保持一致的縮進,3)選擇並堅持使用單引號或雙引號,4)避免在項目中混合使用不同風格,5)利用自動化工具如Prettier或ESLint來確保風格的一致性。

如何在 Bootstrap 4 中實現多項目輪播?如何在 Bootstrap 4 中實現多項目輪播?Apr 30, 2025 pm 03:24 PM

在Bootstrap4中實現多項目輪播的解決方案在Bootstrap4中實現多項目輪播並不是一件簡單的事情。雖然Bootstrap...

deepseek官網是如何實現鼠標滾動事件穿透效果的?deepseek官網是如何實現鼠標滾動事件穿透效果的?Apr 30, 2025 pm 03:21 PM

如何實現鼠標滾動事件穿透效果?在我們瀏覽網頁時,經常會遇到一些特別的交互設計。比如在deepseek官網上,�...

HTML 視頻的播放控件樣式怎麼修改HTML 視頻的播放控件樣式怎麼修改Apr 30, 2025 pm 03:18 PM

無法直接通過CSS修改HTML視頻的默認播放控件樣式。 1.使用JavaScript創建自定義控件。 2.通過CSS美化這些控件。 3.考慮兼容性、用戶體驗和性能,使用庫如Video.js或Plyr可簡化過程。

在手機上使用原生select會帶來哪些問題?在手機上使用原生select會帶來哪些問題?Apr 30, 2025 pm 03:15 PM

在手機上使用原生select的潛在問題在開發移動端應用時,我們常常會遇到選擇框的需求。通常情況下,開發者傾...

在手機上使用原生select的弊端是什麼?在手機上使用原生select的弊端是什麼?Apr 30, 2025 pm 03:12 PM

在手機上使用原生select的弊端是什麼?在移動設備上開發應用時,選擇合適的UI組件是非常重要的。許多開發者�...

如何使用Three.js和Octree優化房間內第三人稱漫遊的碰撞處理?如何使用Three.js和Octree優化房間內第三人稱漫遊的碰撞處理?Apr 30, 2025 pm 03:09 PM

使用Three.js和Octree優化房間內第三人稱漫遊的碰撞處理在Three.js中使用Octree實現房間內的第三人稱漫遊並添加碰�...

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。