搜尋
首頁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內容Apr 11, 2025 am 12:12 AM

HTML的作用是通過標籤和屬性定義網頁的結構和內容。 1.HTML通過到、等標籤組織內容,使其易於閱讀和理解。 2.使用語義化標籤如、等增強可訪問性和SEO。 3.優化HTML代碼可以提高網頁加載速度和用戶體驗。

HTML和代碼:仔細觀察術語HTML和代碼:仔細觀察術語Apr 10, 2025 am 09:28 AM

htmlisaspecifictypefodyfocusedonstructuringwebcontent,而“代碼” badlyLyCludEslanguagesLikeLikejavascriptandPytyPythonForFunctionality.1)htmldefineswebpagertuctureduseTags.2)“代碼”代碼“ code” code code code codeSpassSesseseseseseseseAwiderRangeLangeLangeforLageforLogageforLogicIctInterract

HTML,CSS和JavaScript:Web開發人員的基本工具HTML,CSS和JavaScript:Web開發人員的基本工具Apr 09, 2025 am 12:12 AM

HTML、CSS和JavaScript是Web開發的三大支柱。 1.HTML定義網頁結構,使用標籤如、等。 2.CSS控製網頁樣式,使用選擇器和屬性如color、font-size等。 3.JavaScript實現動態效果和交互,通過事件監聽和DOM操作。

HTML,CSS和JavaScript的角色:核心職責HTML,CSS和JavaScript的角色:核心職責Apr 08, 2025 pm 07:05 PM

HTML定義網頁結構,CSS負責樣式和佈局,JavaScript賦予動態交互。三者在網頁開發中各司其職,共同構建豐富多彩的網站。

HTML容易為初學者學習嗎?HTML容易為初學者學習嗎?Apr 07, 2025 am 12:11 AM

HTML適合初學者學習,因為它簡單易學且能快速看到成果。 1)HTML的學習曲線平緩,易於上手。 2)只需掌握基本標籤即可開始創建網頁。 3)靈活性高,可與CSS和JavaScript結合使用。 4)豐富的學習資源和現代工具支持學習過程。

HTML中起始標籤的示例是什麼?HTML中起始標籤的示例是什麼?Apr 06, 2025 am 12:04 AM

AnexampleOfAstartingTaginHtmlis,beginSaparagraph.startingTagSareEssentialInhtmlastheyInitiateEllements,defiteTheeTheErtypes,andarecrucialforsstructuringwebpages wepages webpages andConstructingthedom。

如何利用CSS的Flexbox佈局實現菜單中虛線分割效果的居中對齊?如何利用CSS的Flexbox佈局實現菜單中虛線分割效果的居中對齊?Apr 05, 2025 pm 01:24 PM

如何設計菜單中的虛線分割效果?在設計菜單時,菜名和價格的左右對齊通常不難實現,但中間的虛線或點如何...

在線代碼編輯器究竟用什麼HTML元素實現代碼輸入?在線代碼編輯器究竟用什麼HTML元素實現代碼輸入?Apr 05, 2025 pm 01:21 PM

網頁代碼編輯器中的HTML元素分析許多在線代碼編輯器允許用戶輸入HTML、CSS和JavaScript代碼。最近,有人提出了一...

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脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

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

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境