用 CSS 進(jìn)行繪圖和布局時(shí),除了借助瀏覽器開(kāi)發(fā)工具之外,還經(jīng)常需要繪制一些輔助線,以便定位參考。今天就以第 170 號(hào)作品中使用的網(wǎng)格線為例,詳細(xì)講解一下輔助線的原理和畫法。
為了使輔助線明顯可見(jiàn),把線的顏色設(shè)置為和背景對(duì)比強(qiáng)烈的白色,并且線也粗一些,在實(shí)際使用時(shí),你應(yīng)該降低輔助線與背景的對(duì)比并且使用細(xì)線。
div {
font-size: 50px;
width: 6em;
height: 4em;
background-color: teal;
}
假設(shè)你有一個(gè) <div> 容器,容器里是否有元素都可以,當(dāng)前演示為了突顯輔助線,暫時(shí)讓容器里空空如也:
div {
background-image: linear-gradient(to bottom, transparent 95%, white 95%);
}
網(wǎng)格線是一條一條線條組成的,所以要先畫出一條線,它的95%都是透明的,只有5%是白色的:
div {
background-size: 1em 1em;
background-repeat: no-repeat;
}
我自己是一名從事了多年開(kāi)發(fā)的web前端老程序員,目前辭職在做自己的web前端私人定制課程,今年年初我花了一個(gè)月整理了一份最適合2019年學(xué)習(xí)的web前端學(xué)習(xí)干貨,各種框架都有整理,送給每一位前端小伙伴,想要獲取的可以關(guān)注我的頭條號(hào)并在后臺(tái)私信我:前端,即可免費(fèi)獲取。
請(qǐng)把繪制網(wǎng)格線想象成是鋪地磚,首先要定義地磚的尺寸,這里用 1em 1em 定義了一塊方磚,同時(shí)讓磚塊不重復(fù),所以只顯示出了孤單的一塊磚:
div {
background-repeat: repeat-x;
}
如果把地磚橫向平鋪,就能組合成一條水平線:
div {
background-repeat: repeat-y;
}
如果把地磚縱向平鋪,就能組合成一條垂直線。
錯(cuò)!
縱向平鋪是像階梯一樣的效果:
div {
background-repeat: repeat;
}
橫向和縱向同時(shí)平鋪,就是像作業(yè)本一樣的多條橫線效果。注意,這時(shí)最頂端是沒(méi)有線的:
div {
background-image: linear-gradient(to right, transparent 95%, white 95%);
background-size: 1em 1em;
background-repeat: repeat;
}
假如把地磚換成向右的豎線,即只把 to bottom 改為 to right ,其他不變,繪制出的就是一排一排的豎線。同樣注意,這時(shí)最左邊是沒(méi)有線的:
div {
background-image:
linear-gradient(to bottom, transparent 95%, white 95%),
linear-gradient(to right, transparent 95%, white 95%);
background-size: 1em 1em;
background-repeat: repeat;
}
把第6步和第7步合并起來(lái),網(wǎng)格線基本成型了,不過(guò)頂端和左端還缺少線條:
div {
background-image:
linear-gradient(to top, transparent 95%, white 95%);
background-size: 1em 1em;
background-repeat: no-repeat;
}
來(lái)解決頂端線的問(wèn)題,先畫出一段頂端線。這段代碼和第3步極相似,僅僅是 to bottom 改成了 to top:
div {
background-repeat: repeat-x;
}
把這一段頂端線水平平鋪,就是一條定位在頂部的水平線:
div {
background-image:
linear-gradient(to left, transparent 95%, white 95%);
background-size: 1em 1em;
background-repeat: no-repeat;
}
用類似的辦法解決左端線問(wèn)題,先定義一段左端線,注意 linear-gradient 函數(shù)的第 1 個(gè)參數(shù)改成 to left 了:
div {
background-repeat: repeat-y;
}
平鋪這段左端線,就得到了一條緊挨容器左側(cè)的豎線:
div:nth-child(13) {
background-image:
linear-gradient(to bottom, transparent 95%, white 95%),
linear-gradient(to right, transparent 95%, white 95%),
linear-gradient(to top, transparent 95%, w hite 95%),
linear-gradient(to left, transparent 95%, white 95%);
background-size: 1em 1em;
background-repeat: repeat, repeat, repeat-x, repeat-y;
好了,我們把第8步不完美的網(wǎng)格線、頂端線、左端線都合起來(lái),就是完美的網(wǎng)格線了,注意 background-repeart 的寫法,它有 4 個(gè)參數(shù),分別對(duì)應(yīng) background-image 里的 4 條線:
干得漂亮!收工。
原文鏈接:https://segmentfault.com/a/1190000021507641
作者:comehope
SS不規(guī)則卡片,純CSS制作優(yōu)惠券樣式,CSSS實(shí)現(xiàn)鋸齒樣式
之前也有寫過(guò) CSS 優(yōu)惠券樣式《CSS3徑向漸變實(shí)現(xiàn)優(yōu)惠券波浪造型》,這次再來(lái)溫習(xí)一遍,并且將更為詳細(xì)的講解,從布局到具體樣式說(shuō)明,最后定義 CSS 變量,自定義主題顏色。
布局 其實(shí)是學(xué)習(xí)前端的重要部分,最常用的方式就是從上而下、從左而右、亦或者兩個(gè)相結(jié)合。
看上圖,而這里,我們就只是最簡(jiǎn)單的布局方式,從上而下:
1、優(yōu)惠券金額和過(guò)期時(shí)間
2、優(yōu)惠券描述
3、按鈕(其實(shí)按鈕也可以放到“2”里面去)
這樣分析,我們就有了 html 架構(gòu)了
<div class="coupon">
<!-- 1、優(yōu)惠券金額和過(guò)期時(shí)間 -->
<div class="price">
100元
<span>優(yōu)惠券</span>
<p class="timeout">2020-12-31 18:18:18過(guò)期</p>
</div>
<!-- 2、優(yōu)惠券描述 -->
<div class="describe">
<p>1、商城、美食可用</p>
<p>2、過(guò)期作廢</p>
</div>
<!-- 3、按鈕 -->
<div class="btns">
<button>立即使用</button>
</div>
</div>
CSS不規(guī)則卡片,純CSS制作優(yōu)惠券樣式,CSSS實(shí)現(xiàn)鋸齒樣式
接下來(lái)我們用 CSS 美化我們的 html 。同理,我們也根據(jù)布局分步進(jìn)行樣式書寫。
這里的核心就是上方的凹槽和下方的鋸齒
.coupon{
background-color: #E0E0E0;
width: 200px;
/* css變量 */
--main-color: #EC407A;
--f-color: #444;
}
.price {
position: relative;
height: 120px;
background-image: radial-gradient(
circle at 100px -8px, #fff 20px, var(--main-color) 21px
);
color: #fff;
font-size: 20px;
text-align: center;
padding-top: 40px;
}
.price .timeout{
color: var(--f-color);
font-size: 14px;
margin-top: 25px;
}
.price span{
font-size: 14px;
}
CSS不規(guī)則卡片,純CSS制作優(yōu)惠券樣式,CSSS實(shí)現(xiàn)鋸齒樣式
這里用到了 徑向漸變,不清楚用法的小伙伴可以看看語(yǔ)法:
background-image: radial-gradient(shape size at position, start-color, ..., last-color);
注釋:
(1)、shape 確定圓的類型:
ellipse (默認(rèn)): 指定橢圓形的徑向漸變。
circle :指定圓形的徑向漸變
(2)、size 定義漸變的大小,可能值:
farthest-corner (默認(rèn)) : 指定徑向漸變的半徑長(zhǎng)度為從圓心到離圓心最遠(yuǎn)的角
closest-side :指定徑向漸變的半徑長(zhǎng)度為從圓心到離圓心最近的邊
closest-corner : 指定徑向漸變的半徑長(zhǎng)度為從圓心到離圓心最近的角
farthest-side :指定徑向漸變的半徑長(zhǎng)度為從圓心到離圓心最遠(yuǎn)的邊
(3)、position 定義漸變的位置。可能值:
center(默認(rèn)):設(shè)置中間為徑向漸變圓心的縱坐標(biāo)值。
top:設(shè)置頂部為徑向漸變圓心的縱坐標(biāo)值。
bottom:設(shè)置底部為徑向漸變圓心的縱坐標(biāo)值。
(4)、start-color, ..., last-color 用于指定漸變的起止顏色。
這樣價(jià)格上方的凹槽就有了,接下來(lái)下方的鋸齒我們也可以用 徑向漸變 的方式實(shí)現(xiàn):
.price::after{
position: absolute;
content: '';
display: block;
bottom: 0px;
height: 10px;
width: 100%;
/* background-size: 11px 200px; */
background-image:
radial-gradient(
circle at 5px 10px,
#E0E0E0 6px,
var(--main-color) 7px);
}
偽類元素 ::after 設(shè)置徑向漸變背景為一個(gè)圓,后進(jìn)行平鋪就形成了鋸齒,調(diào)整位置。
CSS不規(guī)則卡片,純CSS制作優(yōu)惠券樣式,CSSS實(shí)現(xiàn)鋸齒樣式
其實(shí)還有更簡(jiǎn)單的方法,可以直接用一個(gè)虛線邊框即可搞定,請(qǐng)看:
.price::after{
position: absolute;
content: '';
display: block;
bottom: -5px;
width: 100%;
border-bottom: 10px dotted #E0E0E0;
}
CSS不規(guī)則卡片,純CSS制作優(yōu)惠券樣式,CSSS實(shí)現(xiàn)鋸齒樣式
當(dāng)然也有缺陷,間隔位置不好控制
2、優(yōu)惠券描述與按鈕 優(yōu)惠券核心鋸齒已經(jīng)搞定了,下面都是小菜啦,非常簡(jiǎn)單咯
.describe{
color: #333;
padding: 10px;
font-size: 14px;
}
.btns {
/* 使其button可以居中 */
text-align: center;
}
.btns button{
/* 重置按鈕樣式 */
border: none;
box-shadow: none;
outline: none;
background-color: var(--main-color);
color: #fff;
width: 50%;
border-radius: 20px;
line-height: 30px;
margin: 40px 0 20px;
cursor: pointer;
}
CSS不規(guī)則卡片,純CSS制作優(yōu)惠券樣式,CSSS實(shí)現(xiàn)鋸齒樣式
大家都看到了,我們上方代碼主要顏色都采用的變量,而且變量是定義在 .coupon 類選擇器里面的。這樣的原因是:
1、CSS變量作用域(CSS變量只能作用于自身以及后代元素。兄弟元素,祖先元素都不能享用。)
2、方便主題使用
ok,我們就可以copy 多個(gè) 優(yōu)惠券,并給每個(gè)添加一個(gè)不同的 class,比如下方的 theme1、theme2、theme3
<div class="coupon theme1">
...
</div>
<div class="coupon theme2">
...
</div>
<div class="coupon theme3">
...
</div>
<div class="coupon">
...
</div>
接下來(lái)我們就為不同主題定義不同的顏色變量
.coupon.theme1{
--main-color: #8E24AA;
--f-color: #fff;
}
.coupon.theme2{
--main-color: #039BE5;
--f-color: #fff;
}
.coupon.theme3{
--main-color: #26A69A;
--f-color: #fff;
}
這樣,theme1主題下的優(yōu)惠券,就是紫色主題,theme2主題下的優(yōu)惠券,就是藍(lán)色主題...,而默認(rèn)主題顏色就是我們 .coupon 類選擇器里面的定義的變量顏色(紅色)。
今天你學(xué)到了嗎?從布局分析到具體實(shí)現(xiàn),再到主題顏色,相信小伙伴們都各有所得。
這里是云端源想IT,幫你輕松學(xué)IT”
嗨~ 今天的你過(guò)得還好嗎?
睡眠等同于希望
每次醒來(lái)都是一個(gè)新的開(kāi)始
一個(gè)新的希望
- 2024.03.22 -
在Web開(kāi)發(fā)的世界中,CSS(層疊樣式表)是構(gòu)建視覺(jué)吸引力和定義網(wǎng)頁(yè)布局的不可或缺的工具。
掌握如何恰當(dāng)?shù)匾隒SS樣式以及理解它們的優(yōu)先級(jí)規(guī)則,對(duì)于前端開(kāi)發(fā)者來(lái)說(shuō)至關(guān)重要。今天,我們就來(lái)深入探討CSS的四種引入方式,以及選擇器的優(yōu)先級(jí)之謎,了解常用的CSS樣式及使用方法!
CSS(層疊樣式表)為網(wǎng)頁(yè)提供了豐富的樣式定義,允許開(kāi)發(fā)者通過(guò)多種方式將樣式應(yīng)用到HTML文檔中。以下是四種主要的CSS引入方式:
1.1 行內(nèi)樣式
這是最直接也最簡(jiǎn)單的方法,通過(guò)在HTML元素的style屬性中直接編寫CSS規(guī)則。
示例:
<p style="color: red; font-size: 20px;">這是一段紅色的文字。</p>
這種方式的優(yōu)點(diǎn)是簡(jiǎn)單快捷,但缺點(diǎn)是它使得HTML代碼與樣式混合,不夠純凈,且不利于樣式的復(fù)用和維護(hù)。
1.2 內(nèi)嵌樣式
在一個(gè)HTML文檔中使用<style>標(biāo)簽將CSS規(guī)則嵌入到HTML的head部分。這種方式適用于定義特定于某一頁(yè)面的樣式。
示例:
<head>
<style>
body {background-color: powderblue;}
h1 {color: blue;}
p {color: red;}
</style>
</head>
<body>
<h1>This is a heading</h1>
<p>This is a paragraph.</p>
</body>
1.3 外部樣式
這是最常用的方法,它通過(guò)<link>標(biāo)簽將外部的CSS文件鏈接到HTML文檔中。這種方法的優(yōu)勢(shì)在于可以在多個(gè)頁(yè)面間共享同一個(gè)樣式文件,有助于保持代碼的整潔和一致性。
示例:
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css">
</head>
<body>
<h1>This is a heading</h1>
<p>This is a paragraph.</p>
</body>
其中,mystyle.css的內(nèi)容可能如下:
body {background-color: powderblue;}
h1 {color: blue;}
p {color: red;}
1.4 導(dǎo)入樣式
使用@import語(yǔ)句在CSS文件中導(dǎo)入另一個(gè)CSS文件。盡管這種方法可以分離樣式表,但它通常不被推薦使用,因?yàn)槠浼虞d時(shí)序可能會(huì)影響頁(yè)面渲染效率。
示例:
@import url('https://fonts.googleapis.com/css?family=Roboto');
body {
font-family: 'Roboto', sans-serif;
}
1.5 樣式單優(yōu)先級(jí)
作用域范圍:外部樣式表>內(nèi)部樣式表>行內(nèi)樣式表
優(yōu)先級(jí):
2.1 字體樣式
normal - 文字正常顯示
italic - 文本以斜體顯示
oblique - 文本為“傾斜”(傾斜與斜體非常相似,但支持較少)
font-weight 屬性指定字體的粗細(xì)
示例:
<!DOCTYPE html>
<html>
<head>
<style>
.sp1{
color: darkorange;
font-size: 20px;
font-weight: bolder; /* bolder 字體是否加粗*/
font-style: italic; /* italic 字體是否傾斜*/
font-family: "宋體"; /* 設(shè)置字體樣式*/
}
.sp2{
/* 簡(jiǎn)寫 */
/* 順序不能能變:style-weigth-size-family */
font:italic bolder 15px 宋體 ;
color:rgb(28, 235, 97);
}
</style>
<body>
<span>
編程學(xué)習(xí),從云端源想開(kāi)始!
</span><br>
<span>
讓知識(shí)觸手可及
</span>
<p>讓知識(shí)觸手可及</p>
</body>
</html>
2.2 文本樣式
color: 字體顏色
text-align: center; - - 文本對(duì)齊方式
text-decoration:none; - - 文本的線
text-shadow: pink 5px 5px 2px; - - 文本的陰影 【陰影顏色-水平方向的偏移量-垂直方向的偏移量-模糊距離】
line-height: - - 行高 (文本在標(biāo)簽內(nèi)所占的高度)
width:
height:
border: 1px #ffffff solid; - - 盒子邊框【邊框粗細(xì)-顏色-邊框線樣式】
示例:
<style>
.p{
color: rgb(0, 255, 21); /* 字體顏色 */
text-align: center; /* 文本對(duì)齊方式 */
text-decoration:none; /* 文本的線 */
text-shadow: pink 5px 5px 2px; /* 文本的陰影 【陰影顏色-水平方向的偏移量-垂直方向的偏移量-模糊距離】*/
line-height: 400px; /* 行高 (文本在標(biāo)簽內(nèi)所占的高度)*/
width: 400px;
height: 300px;
border: 1px rgb(76, 14, 223) solid; /* 盒子邊框【邊框粗細(xì)-顏色-邊框線樣式】 */
}
</style>
</head>
<body>
<p>歡迎來(lái)到云端源想!</p>
<a href="https://www.baidu.com"></a>
</body>
2.3 背景樣式
width: 500px;
height: 1200px;
background-color: pink; - - 背景顏色
background-image: url(…/img/background.jpg); - - 背景圖片
background-repeat: no-repeat; - - 背景圖片是否平鋪
background-position: left top; - - 指定背景圖片的位置
background-attachment: fixed; - - 背景圖片是否隨著標(biāo)簽滾動(dòng) 【fixed-固定 scroll-滾動(dòng)】
示例:
<style>
.d{
width: 500px;
height: 1200px;
background-color: pink; /* 背景顏色 */
background-image: url(../img/background.jpg); /* 背景圖片 */
background-repeat: no-repeat; /* 背景圖片是否平鋪 */
background-position: left top; /* 指定背景圖片的位置 */
background-attachment: fixed; /* 背景圖片是否隨著標(biāo)簽滾動(dòng) 【fixed-固定 scroll-滾動(dòng)】 */
}
</style>
</head>
<body>
<div>
</div>
2.4 列表樣式
<!DOCTYPE html>
<html>
<head>
<style>
li{
background-color: lemonchiffon;
/*列表樣式:常用取值:none-無(wú)樣式 square-正方形 circle-空心圓 decimal-數(shù)字*/
list-style-type: circle;
/*列表樣式為自定義圖片*/
list-style-image: url(../img/2.jpg);
/*列表樣式的放置位置*/
list-style-position: inside;
/*列表樣式縮寫*/
list-style: square url(../img/2.jpg) inside;
/*常用的列表樣式*/
list-style: none;
}
</style>
</head>
<body>
<ul>
<li>列表項(xiàng)1</li>
<li>列表項(xiàng)2</li>
<li>列表項(xiàng)3</li>
</ul>
</body>
</html>
2.5 邊框樣式
<!DOCTYPE html>
<html>
<head>
<style>
.border{
/*邊框?qū)挾?/
border-width: 2px;
/*邊框顏色*/
border-color: red;
/*邊框樣式:solid 實(shí)線 dotted 點(diǎn)線 dashed 虛線*/
border-style: dashed;
/*邊框樣式縮寫:樣式 顏色 寬度*/
border:solid green 5px;
/*邊框可以為4個(gè)方向分別設(shè)置*/
border-top: dashed black 4px;
border-right: dashed #FF00FF 4px;
border-bottom: dotted darkblue 4px;
border-left: solid fuchsia 5px;
/*沒(méi)有邊框*/
border: none;
/*常用的細(xì)邊框樣式*/
border: solid 1px #ccc;
}
</style>
</head>
<body>
<div class="border">這是一個(gè)帶有邊框的元素</div>
</body>
</html>
2.6 盒子模型
所有的html元素可以看做是盒子,在css中,"box model"是用來(lái)設(shè)計(jì)和布局時(shí)使用。
CSS盒子模型本質(zhì)是一個(gè)盒子,封裝周圍的html元素,它包括:邊框、邊距、填充、實(shí)際內(nèi)容。
盒子模型允許我們?cè)谄渌睾椭車剡吙蛑g的空間放置元素。
想要快速入門前端開(kāi)發(fā)嗎?推薦一個(gè)前端開(kāi)發(fā)基礎(chǔ)課程,這個(gè)老師講的特別好,零基礎(chǔ)學(xué)習(xí)無(wú)壓力,知識(shí)點(diǎn)結(jié)合代碼,邊學(xué)邊練,可以免費(fèi)試看試學(xué),還有各種輔助工具和資料,非常適合新手!點(diǎn)這里前往學(xué)習(xí)哦!云端源想
示例:
<head>
<meta charset="UTF-8">
<title></title>
<style>
/* border:邊框,分4個(gè)方向,同理margin、padding也分為四個(gè)方向
* margin:元素與元素之間對(duì)的距離
* padding:內(nèi)容與邊框之間的距離
* 設(shè)置的時(shí)候順序:上 右 下 左
*/
.div{
border: solid red 10px;
/*四個(gè)方向上的元素與元素之間的距離都是50px*/
margin: 50px;
/*兩個(gè)值的時(shí)候:第一個(gè)參數(shù)表示上下距離都是50px,第二個(gè)參數(shù)表示左右距離都是100px*/
margin: 50px 100px;
padding: 50px;
/*
一個(gè)元素真正的寬度=width+左右padding值+左右的border值
一個(gè)元素的真正高度=height+上下的padding值+上下的border值
* */
}
</style>
</head>
<body>
<div>111111111112222222222223333333333333333</div>
</body>
1)盒子的寬高
元素的實(shí)際寬度和高度:
2)設(shè)置寬度=元素實(shí)際寬度,box-sizing屬性。
<head>
<meta charset="UTF-8">
<title></title>
<style>
/* box-sizing:確認(rèn)元素的大小
content-box: 實(shí)際寬度=width+左右的psdding值+上下的border值
實(shí)際高度=height+上下的padding值+上下的border值
border-box:實(shí)際寬度=width;實(shí)際高度=height
padding和border不會(huì)影響元素的實(shí)際寬高
* */
.box{
width: 100px;
height: 200px;
border: 5px solid;
padding: 5px;
box-sizing: content-box;
}
</style>
</head>
<body>
<div>你好中國(guó)</div>
</body>
CSS的世界博大精深,以上只是冰山一角,希望通過(guò)這些基礎(chǔ)的常用樣式可以幫助你快速進(jìn)入CSS世界的大門。
掌握CSS的引入方式和選擇器優(yōu)先級(jí)是構(gòu)建高效、可維護(hù)網(wǎng)站的關(guān)鍵。通過(guò)這些知識(shí),你可以更好地管理和優(yōu)化你的樣式代碼,創(chuàng)造出既美觀又專業(yè)的網(wǎng)頁(yè)設(shè)計(jì)。現(xiàn)在,準(zhǔn)備好邁入CSS的世界,開(kāi)啟你的創(chuàng)意之旅吧!
我們下期再見(jiàn)!
END
文案編輯|云端學(xué)長(zhǎng)
文案配圖|云端學(xué)長(zhǎng)
內(nèi)容由:云端源想分享
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。