java程序員 css_Java程序員從笨鳥到菜鳥之(十七)CSS基礎積累總結(下)

七.組織元素(span和div)

span和div元素用于組織和結構化文檔,并經常聯合class和id屬性一起使用。

在這一課中,我們將進一步探究span和div的用法,因為這兩個HTML元素對于CSS是很重要的。

用span組織元素

用div組織元素

用span組織元素

span元素可以說是一種中性元素,因為它不對文檔本身添加任何東西。但是與CSS結合使用的話,span可以對文檔中的部分文本增添視覺效果。

讓我們用一句本杰明·弗蘭克林(Benjamin Franklin)的名言來舉個例子:

早睡早起

使人健康、富裕又聰穎。

假設我們想用紅色來強調弗蘭克林先生所認為的“不要在睡眠中度過一天”的好處,我們可以用標簽來標記上述每一點好處。然后,我們將這幾個span設置為相同的class。這樣,我們稍后就可以在樣式表里針對這個class定義特定的樣式。

早睡早起

使人健康

富裕

聰穎

相應的CSS代碼如下:

span.benefit {

color:red;

}

當然,你也可以采用id來為span元素添加樣式。不過正如我們在上一課所學的,如果采用id的話,你必須為這三個span元素各自分別指定一個唯一的id。

用div組織元素

如前面例子所示,span的使用局限在一個塊元素內,而div可以被用來組織一個或多個塊元素。

除去這點區別,div和span在組織元素方面相差無幾。讓我們來看一個例子。我們將歷屆美國總統按其所屬的政營分別組織為兩個列表:

  • 富蘭克林·D·羅斯福
  • 哈利·S·杜魯門
  • 約翰·F·肯尼迪
  • 林登·B·約翰遜
  • 吉米·卡特
  • 比爾·克林頓
  • 德懷特·D·艾森豪威爾
  • 理查德·尼克松
  • 杰拉爾德·福特
  • 羅納德·里根
  • 喬治·布什
  • 喬治·W·布什

在這里,我們可以采用跟上例同樣的方法來處理樣式表:

#democrats {

background:blue;

}

#republicans {

background:red;

}

八:盒狀模型

CSS中的盒狀模型(box model)用于描述一個為HTML元素形成的矩形盒子。盒狀模型還涉及為各個元素調整外邊距(margin)、邊框(border)、內邊距(padding)和內容的具體操作。下圖顯示了盒狀模型的結構:

CSS中的盒狀模型

c007d0158a87a43e35928eadc55776ae.gif

上面的圖示看上去可能感覺有點理論化,好吧,讓我們試著用一個實例來解釋盒狀模型。在我們的例子中,有一個標題和一些文本。該例的HTML代碼如下(摘自世界人權宣言):

Article 1:

All human beings are born free

and equal in dignity and rights.

They are endowed with reason and conscience

and should act towards one another in a

spirit of brotherhood

通過添加一些顏色及字體信息,該例可以有以下顯示效果:

b28a30dbd9744c6cdd894cc07b17620e.gif

這個例子包含了兩個元素:h1和p。這兩個元素的盒狀模型如下圖所示:

e6dfbf815534e1df52ab72b2b508c051.gif

為元素設置外邊距

一個元素有上(top)、下(bottom)、左(left)、右(right)四個邊。外邊距(margin)表示從一個元素的邊到相鄰元素(或者文檔邊界)之間的距離。可以參考第9課的圖示。

在下面這個例子中,我們將了解如何為文檔本身(即body元素)定義外邊距。下圖顯示了我們對外邊距的要求。

4416ba4708f25607653c658406e0fea6.gif

滿足上述要求的CSS代碼如下:

body {

margin-top:100px;

margin-right:40px;

margin-bottom:10px;

margin-left:70px;

}

或者你也可以采用一種較優雅的縮寫形式:

body {

margin: 100px 40px 10px 70px;

}

幾乎所有元素都可以采用跟上面一樣的方法來設置外邊距。例如,我們可以為所有用

標記的文本段落定義外邊距:

body {

margin: 100px 40px 10px 70px;

}

p {

margin: 5px 50px 5px 50px;

}

為元素設置內邊距

內邊距(padding)也可以被理解成“填充物”。這樣理解是合理的,因為內邊距并不影響元素間的距離,它只定義元素的內容與元素邊框之間的距離。

下面我們通過一個簡單的例子來說明內邊距的用法。在這個例子中,所有標題都具有背景色:

h1 {

background: yellow;

}

h2 {

background: orange;

}

通過為標題設置內邊距,你可以控制在標題文本周圍填充多少空白:

h1 {

background: yellow;

padding: 20px 20px 20px 80px;

}

h2 {

background: orange;

padding-left:120px;

}

邊框

邊框(border)可以有多種用途,比如作為裝飾元素或者作為劃分兩物的分界線。在設置邊框方面,CSS為你提供了無盡選擇。

邊框寬度[border-width]

邊框寬度由CSS屬性border-width定義,其值可以是“thin”(薄)、“medium”(普通)或“thick”(厚)等,也可以是像素值。如下圖所示:

cd32fa5baff40c876f62a68b698f45d0.gif

邊框顏色[border-color]

2f52e9ef10148095c29cf6a6a658d8c5.gif

CSS屬性border-color用于定義邊框的顏色。其值就是正常的顏色值,例如:“#123456”、 “rgb(123,123,123)”、“yellow”等。

邊框樣式[border-style]

邊框樣式有多種可供選擇。下圖顯示了8種不同樣式的邊框在Internet Explorer 5.5里的實際顯示效果。在這個例子里,我們為這8種邊框都選擇了“金色(gold)”作為邊框顏色、“厚(thick)”作為邊框寬度。當然,這只是個例子,你可以為邊框設置別的顏色和厚度。

如果你不想有任何邊框,可以為它取值為“none”或者“hidden”。

4c94de233d6158f012425cf6dd886da9.gif

一些示例

我們可以將上面三個有關邊框的CSS屬性組合起來使用,從而制造出多種多樣的變化。來舉個例子,我們要為一個文檔中的h1、h2、ul和p等元素分別定義不同的邊框。盡管其顯示效果也許并不那么美觀,但是它很好地向你展示了多種變化的可能:

h1 {

border-width: thick;

border-style: dotted;

border-color:gold;

}

h2 {

border-width: 20px;

border-style: outset;

border-color: red;

}

p {

border-width: 1px;

border-style: dashed;

border-color: blue;

}

ul {

border-width: thin;

border-style: solid;

border-color: orange;

}

我們也可以為上邊框、下邊框、右邊框、左邊框分別指定特定的CSS屬性。具體做法如下例所示:

h1 {

border-top-width: thick;

border-top-style: solid;

border-top-color: red;

border-bottom-width: thick;

border-bottom-style: solid;

border-bottom-color: blue;

border-right-width: thick;

border-right-style: solid;

border-right-color: green;

border-left-width: thick;

border-left-style: solid;

border-left-color: orange;

}

縮寫[border]

跟許多其他屬性一樣,你也可以將有關邊框的CSS屬性縮寫為一個border屬性。讓我們看一個例子:

p {

border-width: 1px;

border-style: solid;

border-color: blue;

}

可被縮寫為:

p {

border: 1px solid blue;

}

設定寬度[width]

你可以通過width屬性來設定一個元素的寬度,即在水平方向上的尺寸。

下面是一個簡單的例子,它為我們提供了一個可以容納文本的盒子:

div.box {

width: 200px;

border: 1px solid black;

background: orange;

}

設定高度[height]

注意上一個例子,盒子里內容的長短決定了盒子的高度。你可以通過height屬性來設定一個元素的高度。比方說,我們要把上面那個例子中的盒子高度設定為500像素:

div.box {

height: 500px;

width: 200px;

border: 1px solid black;

background: orange;

}

浮動元素(float)

我們可以通過CSS屬性float令元素向左或向右浮動。也就是說,令盒子及其中的內容浮動到文檔(或者是上層盒子)的右邊或者左邊(參見第9課關于盒狀模型的描述)。下圖闡明了其原理:

20bdb26aeea232f47db66d9464db0656.gif

如何實現這個效果?

上例的HTML代碼如下所示:

Bill Gates

causas naturales et antecedentes,

idciro etiam nostrarum voluntatum...

要實現圖片向左浮動、而且被文字環繞的效果,你只需先設定圖片所在盒子的寬度,然后再把CSS屬性float設為left即可:

#picture {

float:left;

width: 100px;

}

另一個例子:列

浮動也可以用于實現在文檔中分列。要創建多個列,你需要在HTML代碼里用div來結構化想要的各個列:

Haec disserens qua de re agatur

et in quo causa consistat non videt...

causas naturales et antecedentes,

idciro etiam nostrarum voluntatum...

nam nihil esset in nostra

potestate si res ita se haberet...

下面,我們把各列的寬度設定為“33%”,并通過定義float屬性令各列向左浮動:

#column1 {

float:left;

width: 33%;

}

#column2 {

float:left;

width: 33%;

}

#column3 {

float:left;

width: 33%;

}

float屬性的值可以是left、right或者none。

clear屬性

CSS屬性clear用于控制浮動元素的后繼元素的行為。

缺省地,后繼元素將向上移動,以填補由于前面元素的浮動而空出的可用空間。在前面的例子中,文本自動上移到了比爾蓋茨的圖片旁。

clear屬性的值可以是left、right、both或none。原則是這樣的:如果一個盒子的clear屬性被設為“both”,那么該盒子的上邊距將始終處于前面的浮動盒子(如果存在的話)的下邊距之下。

Bill Gates

Bill Gates

causas naturales et antecedentes,

idciro etiam nostrarum voluntatum...

要避免文本上移到圖片旁,我們可以在CSS中添加以下代碼:

#picture {

float:left;

width: 160px;

}

.floatstop {

clear:both;

}

元素的定位

CSS定位令你可以將一個元素精確地放在頁面上你所指定的地方。聯合使用定位與浮動(參見第13課),你將能夠創建多種高級而精確的布局。

本課我們將討論以下內容:

CSS定位的原理

把瀏覽器窗口想象成一個坐標系統:

e379a24f00fd1c55937fce2fd78b20ca.gif

CSS定位的原理是:你可以將任何盒子(box)放置在坐標系統的任何位置上。

假設我們要放置一個標題。通過使用盒狀模型(參見第9課),標題將顯示如下:

1c257e9e30317f982a4cd0c0d504d4b0.gif

如果我們要把這個標題放置在距文檔頂部100像素、左邊200像素的地方,我們可以在CSS中輸入以下代碼:

h1 {

position:absolute;

top: 100px;

left: 200px;

}

得到的顯示效果如下:

361758c8552c15c69575429390e3de84.gif

正如你所看到的,采用CSS定位技術來放置元素是非常精確的。相對于使用表格、透明圖像或其他方法而言,CSS定位要簡單得多。

絕對定位

一個采用絕對定位的元素不獲得任何空間。這意味著:該元素在被定位后不會留下空位。

要對元素進行絕對定位,應將position屬性的值設為absolute。接著,你可以通過屬性left、right、top和bottom來設定將盒子放置在哪里。

舉個絕對定位的例子,假如我們要在文檔的四個角落各放置一個盒子:

#box1 {

position:absolute;

top: 50px;

left: 50px;

}

#box2 {

position:absolute;

top: 50px;

right: 50px;

}

#box3 {

position:absolute;

bottom: 50px;

right: 50px;

}

#box4 {

position:absolute;

bottom: 50px;

left: 50px;

}

相對定位

要對元素進行相對定位,應將position屬性的值設為relative。絕對定位與相對定位的區別在于計算位置的方式。

采用相對定位的元素,其位置是相對于它在文檔中的原始位置計算而來的。這意味著,相對定位是通過將元素從原來的位置向右、向左、向上或向下移動來定位的。采用相對定位的元素會獲得相應的空間。

舉個相對定位的例子,我們可以相對于三張圖片在頁面上的原始位置來對它們進行相對定位。注意這些圖片將在文檔中各自的原始位置處留下空位。

#dog1 {

position:relative;

left: 350px;

bottom: 150px;

}

#dog2 {

position:relative;

left: 150px;

bottom: 500px;

}

#dog3 {

position:relative;

left: 50px;

bottom: 700px;

}

用z-index進行層次堆疊

CSS可以處理高度、寬度、深度三個維度。在前面的課程中,我們已經了解了前兩個維度。在本課中,我們將學習如何令不同元素具有層次。簡言之,就是關于元素堆疊的次序問題。

為此,你可以為每個元素指定一個數字(z-index)。其原理是:數字較大的元素將疊加在數字較小的元素之上。

比方說,我們正在打撲克,并且拿了一手同花大順。我們可以通過為各張牌設定一個z-index的方式來表示這手牌:

82ef66636b016e181df7e34cd5b29a35.gif

在這個例子中,我們采用了1-5五個連續的數字來表示堆疊次序,但是你也可以用五個不同的其他數字來取得同樣的效果。這里的要點在于:用數字的大小次序反映希望的堆疊次序。

撲克牌這個例子的代碼可以這樣寫:

#ten_of_diamonds {

position: absolute;

left: 100px;

top: 100px;

z-index: 1;

}

#jack_of_diamonds {

position: absolute;

left: 115px;

top: 115px;

z-index: 2;

}

#queen_of_diamonds {

position: absolute;

left: 130px;

top: 130px;

z-index: 3;

}

#king_of_diamonds {

position: absolute;

left: 145px;

top: 145px;

z-index: 4;

}

#ace_of_diamonds {

position: absolute;

left: 160px;

top: 160px;

z-index: 5;

}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/529999.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/529999.shtml
英文地址,請注明出處:http://en.pswp.cn/news/529999.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

redlock java_Redlock分布式鎖

這篇文章主要是對 Redis 官方網站刊登的 Distributed locks with Redis 部分內容的總結和翻譯。什么是 RedLockRedis 官方站這篇文章提出了一種權威的基于 Redis 實現分布式鎖的方式名叫 Redlock,此種方式比原先的單節點的方法更安全。它可以保證以下特性&#xff1…

java 兩個數組交叉_java – 如何交叉兩個沒有重復的排序整數數組?

這個問題本質上減少到一個連接操作,然后是一個過濾器操作(刪除重復,只保留內部匹配).由于輸入都已經排序,所以可以通過O(O(size(a)size(b))的merge join來有效地實現連接.過濾器操作將為O(n),因為連接的輸出被排序,并且要刪除重復項,所有您需要做的是檢查每個元素是否與之??前…

java retentionpolicy_Java注解之如何利用RetentionPolicy.SOURCE生存周期

上一篇文章簡單講了下Java注解的學習之元注解說明,學習了Java注解是如何定義的,怎么使用的,但是并沒有介紹Java的注解是怎么起作用的,像Spring Boot里面的那些注解,到底是怎么讓程序這樣子運行起來的?特別是…

在java程序中定義的類有兩種成員_java試題 急需答案 謝謝!!!

三、填空(每小題2分,共10分)1.在Applet中,創建一個具有10行45列的多行文本區對象ta的語句為:2.創建一個標識有“關閉”字樣的標簽對象gb的語句為。3.方法是一種僅有方法頭,沒...三、填空(每小題…

java 同步 變量,在java中的對象上同步,然后更改同步的變量的值

I came across a code like thissynchronized(obj) {obj new Object();}Something does not feel right about this , I am unable to explain, Is this piece of code OK or there is something really wrong in it, please point it out.Thanks解決方案Its probably not wha…

java set泛型_Java 集合二 泛型、Set相關

泛型1、在定義一個類的方法時,因為不確定返回值類型,所以用一個符號代替,這個符號就是泛型eg:ArrayList list new ArrayList();2、泛型的好處:1、提高了數據的安全性,將運行時的問題提前暴露在編譯階段2、避免了強轉的…

java annotation 實現_在Java中如何實現自己的annotation

1. 先定義annotation2. 使用annotation例子:import java.lang.annotation.*;import java.lang.reflect.Method;Target(ElementType.METHOD)Retention(RetentionPolicy.RUNTIME)interface Test {String info() default "";}class Annotated {Test(info &q…

登錄界面攔截java_java攔截通過url訪問頁面,必須通過登錄頁面訪問目標頁面

在web.xml中配置過濾:LoginFiltercom.verification.action.LoginFilterLoginFiltery/form/dealParse.do/* 攔截所有請求/.do 攔截以“.do”結尾的請求/index.jsp 攔截指定的jsp/artery/form/* 攔截該目錄下的所有請求等等攔截器,攔截請求類&#xf…

python textwrap_[Python標準庫]textwrap——格式化文本段落

textwrap——格式化文本段落作用:通過調整換行符在段落中出現的位置來格式化文本。 Python 版本:2.5 及以后版本 需要美觀打印時,可以用 textwrap 模塊來格式化要輸出的文本。這個模塊允許通過編程提供類似段落自動換行或填充…

java 字符串 1_java 字符串操作大全1

1、length() 字符串的長度例:char chars[]{a,b.c};String snew String(chars);int lens.length();2、charAt() 截取一個字符例:char ch;ch"abc".charAt(1); 返回b3、getChars() 截取多個字符void getChars(int sourceStart,int sourceEnd,char…

java實現權限_Java實現權限管理的兩種方式

編輯特別推薦:種方式:利用filter、xml文件和用戶信息表配合使用來實現權限管理。1.過濾器filterpackage cn.com.aaa.bbb.filter;import java.io.IOException;import java.io.InputStream;import java.util.HashMap;import java.util.Iterator;import java.util.List…

java 輸入16進制_嘗試使用十六進制輸入來使用小端和大端

我試圖用這兩個原型編寫C函數:int extract_little (char* str, int ofset, int n);int extract_big(char* str, int ofset, int n);現在一般的想法是我需要從地址str ofset開始以兩種格式返回一個n字節整數 . 附: Ofset還沒有做任何事情,我計…

java gson_Java 中 Gson的使用

JSON 是一種文本形式的數據交換格式,它比XML更輕量、比二進制容易閱讀和編寫,調式也更加方便;解析和生成的方式很多,Java中最常用的類庫有:JSON-Java、Gson、Jackson、FastJson等一、Gson的基本用法Gson提供了fromJson() 和toJson…

spring注入普通java類_普通java類如何取得注入spring Ioc容器的對象

[除了使用XML配置外,還可以選擇使用基于注解(annotation)的配置方式,其依賴于字節碼來織入組件。注解注入在XML注入之前完成,因此在XML配置中可以重載注解注入的屬性。一、建一個SpringUtil類package com.ceopen.eoss.spring; import org.spr…

java web 集成dom4j_[JavaWeb基礎] 031.dom4j寫入xml的方法

上一篇我們講述了dom4j讀取xml的4種方法,甚是精彩,那么怎么樣寫入xml呢?我們直接看下源碼實現。public static void main(String[] args) throws Exception {// 創建文檔Document document DocumentHelper.createDocument();// 設置編碼docu…

java servlet 調試日志 logger sae_java servlet 調試日志 lo

java servlet 調試日志 lo[2021-02-10 08:32:08] 簡介:php去除nbsp的方法:首先創建一個PHP代碼示例文件;然后通過“preg_replace("/(\s|\&nbsp\;| |\xc2\xa0)/", " ", strip_tags($val));”方法去除所有nbsp即可。推薦&#x…

java接口權限管理在哪里_java訪問權限控制

為什么java要有訪問權限的控制?訪問權限的設置和代碼的重構有關。在一個項目中,大多數的時間和金錢都投入到了代碼的維護當中。維護中一定會修改已存在的不合理的代碼。但是在重構的過程中,就出現了這樣的問題:如何保證不影響那些使用了待修…

java8 stream index_Java8的stream用法整理

/***authorindex* date 2020/10/27**/public classTestcollectingAndThen {Testpublic voidtest(){final int NUM 14;List peopleList new ArrayList<>(NUM);String[] names {"小張", "小龍", "小牛", "小豬", "小黑&quo…

memo、 useMemo 和 useCallback語法講解

memo、 useMemo 和 useCallback 緩存組件, 對組件淺比較 (只有組件的props, (對函數,引用要用useCallback包裹)發生變化 緩存值, 依賴項變化&#xff0c;會從新計算。 緩存函數, 依賴項變化,重新生成新函數 useMemo 語法 對返回的值緩存進行優化 const memoizedValue useMem…

java只修改變的字段_java注解之運行時修改字段的注解值操作

今天遇到需求&#xff1a;導入Excel時候列頭會發生變化&#xff0c;客戶是大爺要求你改代碼&#xff0c;導入Excel是用easypoi做的&#xff0c;識別表頭是用注解Excel(name "xxx")通過這個name來匹配那你表頭要動&#xff0c;我這個注解是硬編碼所以就有動態設置這個…