精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

CSS & SVG 繪制寫作網格線的三種方式

開發 前端
CSS 漸變混合模式的優點在于實現思路比較簡單,很容易想到,純色背景優先推薦,缺點是混合模式有一些局限性,比如在黑色背景下可能需要換一種模式了。

最近有同事問我這樣一個問題:需要繪制一個自適應文本的寫作網格線,設計稿是這樣的。

圖片

寫作網格

其實就是一行行虛線,要求如下:

  1. 虛線的縱向間隔要跟隨行高自適應,確保文本在每一欄虛線上。
  2. 虛線后面的背景是動態的,可以是純色,可以是漸變,也可以是圖片。

繪制這樣的虛線,看似容易,其實暗藏玄機,下面一起看看有哪些實現方式吧。

一、純色背景下的虛線

首先來看這種簡單情況,大可以通過兩層漸變覆蓋的方式實現。

假設文本行高是2,先繪制水平方向的。

body{
background: linear-gradient(#666 1px,transparent 0) 0 -1px/100% 2em;
}

注意,這里的背景尺寸是100% 2em,高度跟隨文字行高,所以高度是2em,效果如下:

圖片

然后,繪制縱向的實線,蓋在上面,為了區分,先用一個淺紅色來代替。

body{
background: linear-gradient(to right, #ffdbdb 4px,transparent 0) 0 -4px/8px 100%, /*垂直*/
linear-gradient(#666 1px,transparent 0) 0 -1px/100% 2em; /*水平*/
}

這樣就繪制了一個垂直平鋪,間隔為4px的虛線,效果如下:

圖片

應該比較好理解吧,就是兩個方向上的漸變疊加。

然后,將這個紅色改成和底色相同的顏色就行了,比如這里是白色。

body{
background: linear-gradient(to right, #fff 4px,transparent 0) 0 -4px/8px 100%, /*垂直*/
linear-gradient(#666 1px,transparent 0) 0 -1px/100% 2em; /*水平*/
}

這樣就實現了純色下的虛線網格,效果如下:

圖片

二、漸變背景下的虛線

如果不是純色,而是漸變的呢?假設有一個這樣的背景。

圖片

如果直接用前面的方式,可能就變成了這樣。

圖片

白色直接把背后的漸變背景也覆蓋了。

那如何解決這個問題呢?

像這種疊加混合的情況一般都會想到混合模式,沒錯,這里也可以通過混合模式簡單處理。要用混合模式,必須要讓這兩層背景處于不同的容器中,然后使用mix-blend-mode。

html{
background: linear-gradient(45deg, #f5ffc0, #fff);
}

body{
font-size: 20px;
background: linear-gradient(to right, #fff 4px,transparent 0) 0 -4px/8px 100%, linear-gradient(#666 1px,transparent 0) 0 -1px/100% 2em;
mix-blend-mode: darken;
}

這里使用了混合模式中的darken,這種模式可以去除白色部分,保留其他,效果如下:

圖片

完整代碼可以查看以下任意鏈接:

  • CSS dot line mix-blend-mode (juejin.cn)[1]
  • CSS dot line mix-blend-mode (codepen.io)[2]
  • CSS dot line mix-blend-mode (runjs.work)[3]

三、通過錐形漸變繪制

下面再介紹一個比較硬核的繪制方式:錐形漸變(conic-gradient)[4]。

為什么說比較硬核呢?因為這種方式繪制出來的圖形就是完完全全的虛線,也沒有混合模式的諸多限制。

首先我們從圖形上分析,找到最小的重復單元,如下:

圖片

找到了,就是這個,其實就是這個位于左上角的矩形,那么,如何通過錐形漸變來繪制呢?

注意:有同學可能會奇怪,這樣一個矩形線性漸變不是可以很輕松的實現嗎?確實可以,但是只能實現一個,無法平鋪

看著好像不沾邊,下面帶你一步步演變。

首先是最原始的語法。

div{
background: conic-gradient(#666, transparent);
}

這是一個從透明到灰色的漸變,效果如下:

圖片

這才是錐形漸變的樣子!

然后,我們可以將漸變的分界線調整一下。

div{
background: conic-gradient(#666 90deg, transparent 0deg);
}

這樣就變成了一個邊界分明的正方形。

圖片

然后改變起始角度,通過from關鍵詞。

div{
background: conic-gradient(from 270deg, #666 90deg, transparent 0deg);
}

這樣起始角度就會從270deg的地方開始,如下:

圖片

接著,改變中心點的位置,默認是水平垂直居中的,我們要改到左上角,需要用到??at??關鍵詞

div{
background: conic-gradient(from 270deg at 40px 10px, #666 90deg, transparent 0deg);
}

這里改成了左上角40px,10px的地方,如下:

圖片

最后,改變背景的尺寸,默認是寬高100%的,我們要改成實際需要的大小。

div{
background: conic-gradient(from 270deg at 40px 10px, #666 90deg, transparent 0deg);
background-size: 80px 90px;
}

這樣就會自動平鋪展開,如下:

圖片

原理就是這樣,實際上的虛線比較小,應該是4px 1px,所以實際應用應該是這樣。

div{
background: conic-gradient(from 270deg at 4px 1px, #666 90deg, transparent 0deg);
background-size: 8px 2em;
}

效果如下:

圖片

完整代碼可以查看以下任意鏈接:

  • CSS dot-line conic-gradient (juejin.cn)[5]
  • CSS dot-line conic-gradient (codepen.io)[6]
  • CSS dot-line conic-gradient (runjs.work)[7]

四、動態SVG背景繪制

最后再來介紹一個實現起來最容易的方式,就是“切圖”。

但是,這種“切圖”不同于一般的切圖,因為這個尺寸是動態的,要跟隨文字的行高變化而變化,所以需要采取一定的“手段”。

首先在繪圖軟件中繪制這樣一個圖形,例如下面是figma中繪制的。

圖片

外面的寬高無所謂,隨便設置。可以得到這樣一段SVG。

<svg width="10" height="10" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="10" height="10" fill="none"/>
<rect width="5" height="1" fill="#D9D9D9"/>
</svg>

然后,我們將這個svg轉換成內聯 CSS格式。

推薦張鑫旭老師的在線轉換工具:SVG在線壓縮合并工具[8]。

直接用到背景上。

body{
font-size: 20px;
background: url("data:image/svg+xml,%3Csvg width='10' height='10' viewBox='0 0 10 10' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h10v10H0z'/%3E%3Cpath fill='%23D9D9D9' d='M0 0h5v1H0z'/%3E%3C/svg%3E") 0 0/10px 2em;
}

效果如下:

圖片

為啥這里的虛線都錯位了呢?

這也是 SVG不同于常規圖片的一點,在外部背景尺寸超過viewbox尺寸后,SVG 畫布會整體縮放,但是具體的元素并不會,具體表現是這樣的。

圖片

那么,有沒有辦法在畫布縮放的時候,里面的元素仍然位于左上角呢?就像這樣

圖片

當然也是可以的,只需要將viewbox改為0 0 100% 100%就行了,或者干脆刪除(默認就是100%),SVG的寬高也要改成100%,如下:

<svg width="100%" height="100%" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="10" height="10" fill="none"/>
<rect width="5" height="1" fill="#D9D9D9"/>
</svg>

這樣一來,不管背景尺寸如何變化,內部的虛線位置都不受影響,效果如下:

圖片

完整代碼可以查看以下任意鏈接

  • svg dot-line (juejin.cn)[9]
  • svg dot-line (codepen.io)[10]
  • svg dot-line (runjs.work)[11]

除了上面這種方式,還可以換一種思路,讓默認的虛線是居中的,這樣在放大后也是居中的,如下

圖片

這樣在不改變viewbox的情況下也能實現相同的效果,有興趣的小伙伴可以下去試一試。

五、總結一下優缺點

以上共介紹了 3 種完全不同的繪制虛線的方式,原理各不相同,也有各自的優缺點,下面總結一下。

CSS 漸變混合模式的優點在于實現思路比較簡單,很容易想到,純色背景優先推薦,缺點是混合模式有一些局限性,比如在黑色背景下可能需要換一種模式了。

CSS 錐形漸變的優點在于代碼實現簡單,不受結構限制,缺點是有點不好理解,還有就是兼容性稍微差一些。

SVG 自適應背景的優點在于使用簡單,基本等同于“切圖”,缺點是需要掌握 SVG 的特性,而且無法直接通過 CSS 改變顏色,只能換圖。

綜合來講,如果兼容性沒有要求,首推第2種方式,其次是 SVG 方式,最后才是混合模式。

參考資料

[1]CSS dot line mix-blend-mode (juejin.cn): ??https://code.juejin.cn/pen/7185780439276060730。??

[2]CSS dot line mix-blend-mode (codepen.io): ??https://codepen.io/xboxyan/pen/ExpNBPr。??

[3]CSS dot line mix-blend-mode (runjs.work): ??https://runjs.work/projects/a0ec6e9e89f943a2。??

[4]錐形漸變(conic-gradient): ??https://developer.mozilla.org/en-US/docs/Web/CSS/gradient/conic-gradient。??

[5]CSS dot-line conic-gradient (juejin.cn): ??https://code.juejin.cn/pen/7185788769595818042。??

[6]CSS dot-line conic-gradient (codepen.io): ??https://codepen.io/xboxyan/pen/GRBNbEN。??

[7]CSS dot-line conic-gradient (runjs.work): ??https://runjs.work/projects/dc01e87b2c62426b。??

[8]SVG在線壓縮合并工具: ??https://www.zhangxinxu.com/sp/svgo/。??

[9]svg dot-line (juejin.cn): ??https://code.juejin.cn/pen/7185803705722077219。??

[10]svg dot-line (codepen.io): ??https://codepen.io/xboxyan/pen/eYjBwxa。??

[11]svg dot-line (runjs.work): ??https://runjs.work/projects/c725bbf1830743b6。??

責任編輯:姜華 來源: 前端偵探
相關推薦

2023-12-04 09:31:13

CSS卡片

2010-09-07 16:31:27

CSS

2012-07-17 09:16:16

SpringSSH

2022-03-16 14:27:49

CSS三角形前端

2010-09-02 16:26:59

CSS命名

2021-02-28 07:42:40

可視化網格線H5-Dooring

2020-11-01 17:10:46

異步事件開發前端

2019-11-20 18:52:24

物聯網智能照明智能恒溫器

2021-11-05 21:33:28

Redis數據高并發

2021-06-24 08:52:19

單點登錄代碼前端

2014-12-31 17:42:47

LBSAndroid地圖

2010-03-12 17:52:35

Python輸入方式

2010-09-14 15:10:49

CSS注釋

2024-07-31 20:38:18

2023-09-11 09:07:58

CSS隱藏滾動條

2024-07-08 09:03:31

2015-01-05 09:56:20

可穿戴設備

2023-10-18 11:12:01

增強現實VR

2013-06-17 17:08:47

Windows PhoWP開發共享數據方式

2011-06-03 11:53:06

Spring接口
點贊
收藏

51CTO技術棧公眾號

日本精品久久久久影院| 亚洲成人a级网| 中文国产成人精品久久一| 三年中国国语在线播放免费| 黄色小网站在线观看| 伊人久久大香线蕉综合热线| 日韩电影中文 亚洲精品乱码 | 午夜激情视频在线观看| 国产成人免费av在线| 国产精品久久久久久网站| 久草视频在线免费看| 日韩成人综合| 日韩av影视在线| 最新免费av网址| 中文在线а√在线8| 中文字幕亚洲在| 另类欧美小说| 国精品人妻无码一区二区三区喝尿| 久色成人在线| 久久久久五月天| 极品色av影院| 欧美艳星介绍134位艳星| 欧美精品一区二区久久久| 国产乱码一区二区三区四区| 欧美日韩免费看片| 午夜一区二区三区在线观看| 国产高清免费在线| yiren22亚洲综合伊人22| 91原创在线视频| 成人精品水蜜桃| 国产露脸91国语对白| 天堂蜜桃一区二区三区| …久久精品99久久香蕉国产| 麻豆疯狂做受xxxx高潮视频| 水蜜桃精品av一区二区| 一二美女精品欧洲| a毛片毛片av永久免费| 日韩啪啪网站| 国产偷亚洲偷欧美偷精品| 国产精品亚洲一区二区无码| 色妞ww精品视频7777| 欧美福利视频导航| 91小视频在线播放| www.久久热| 3atv在线一区二区三区| 超碰人人草人人| 日韩久久99| 欧美精品在线视频| 欧美一级xxxx| 精品中文在线| 日韩欧美高清dvd碟片| 超碰中文字幕在线观看| www.成人在线.com| 欧美一卡二卡在线| 又大又长粗又爽又黄少妇视频| 欧美黄色一级| 精品久久人人做人人爽| av在线天堂网| 神马午夜久久| 国产亚洲欧美日韩一区二区| 欧美熟妇激情一区二区三区| 欧美日韩色图| 免费不卡在线观看av| 欧美日韩大片在线观看| 影音先锋中文字幕一区二区| 欧美制服第一页| 激情视频网站在线观看| 日韩福利视频网| 成人精品视频在线| 亚洲精品久久久久久无码色欲四季 | 很黄的网站在线观看| 亚洲乱码国产乱码精品精可以看| xxxxxx在线观看| av中文在线资源库| 色婷婷久久久亚洲一区二区三区| 免费看污污网站| 久久免费福利| 亚洲国产精品中文| 国产毛片欧美毛片久久久| 亚洲成av人片一区二区密柚| 久久久久久com| 香蕉污视频在线观看| 精品一区二区精品| 国产乱码一区| 在线免费av网站| 亚洲二区视频在线| 国产小视频精品| 北条麻妃在线一区二区免费播放 | 欧美一区二区三区色| 欧亚乱熟女一区二区在线 | 亚洲小说欧美另类激情| 538视频在线| 欧美亚洲一区二区三区四区| 国产亚洲色婷婷久久| 一区三区在线欧| 欧美成人精品三级在线观看| 欧美激情黑白配| 国产精品一二三在| 日韩欧美在线一区二区| 色爱综合区网| 欧美日韩一级二级三级| 在线免费看黄色片| 亚洲精品一区二区在线看| 欧美一级视频一区二区| 成人黄色在线观看视频| 日本一区二区动态图| 国产免费黄色一级片| 亚洲一区av| 亚洲一区av在线播放| 国产亚洲色婷婷久久99精品| 麻豆国产91在线播放| 蜜桃狠狠色伊人亚洲综合网站| 色三级在线观看| 色婷婷激情久久| 成人性生活免费看| 欧美福利网址| 成人在线激情视频| 91激情在线| 欧美综合视频在线观看| 中文在线永久免费观看| 欧美激情性爽国产精品17p| 国产精品狼人色视频一区| 亚洲国产成人精品一区二区三区| 国产精品毛片大码女人| 欧美精品第三页| 天海翼精品一区二区三区| 久久久久久久久久久免费 | 91网站视频在线观看| 国产a级黄色大片| 91精品福利观看| 熟妇高潮一区二区高潮| 伊人一区二区三区| 一级网站在线观看| 99re66热这里只有精品8| 国产99久久精品一区二区 夜夜躁日日躁 | 国产无码精品一区二区| 国产精品白丝jk黑袜喷水| 自拍亚洲欧美老师丝袜| 婷婷激情成人| 日韩中文字幕免费| 国产精品视频一二区| 国产精品国产三级国产普通话99| 99视频在线视频| 欧美xxav| 91久久综合亚洲鲁鲁五月天| 久草资源在线| 欧美一卡2卡3卡4卡| 欧美精品入口蜜桃| 成人av在线资源网| 成年人视频观看| 亚洲男人都懂第一日本| 日韩美女在线观看| av电影在线网| 在线电影欧美成精品| 国产探花在线播放| 成人国产精品免费| 欧美精品色婷婷五月综合| 最新亚洲精品| 国产精品爽黄69| 黄色网页在线看| 精品捆绑美女sm三区| 1级黄色大片儿| 久久久久国产一区二区三区四区| 国产三级日本三级在线播放| 色喇叭免费久久综合网| 91久久国产自产拍夜夜嗨| 欧美四级在线| 亚洲国产第一页| www.久久久久久久| 国产精品国产三级国产普通话蜜臀 | 精品亚洲一区二区三区| 中文字幕 人妻熟女| 亚洲男帅同性gay1069| 成年女人免费视频| 丝袜诱惑亚洲看片 | 亚洲欧美日韩视频二区| 欧美在线观看日本一区| 国模精品一区二区| 69堂国产成人免费视频| 国产精品.www| 欧美国产乱子伦 | 久久影院视频免费| 国产免费中文字幕| 一区二区三区四区五区精品视频| 日韩欧美在线一区二区| 亚洲不卡在线| 国产精品1234| 欧美女同一区| 中文字幕精品av| 开心激情综合网| 在线视频国内自拍亚洲视频| 国产精品丝袜一区二区| 91色porny在线视频| 国产欧美一区二| 中文欧美日韩| 黄色一级视频播放| 久久99久久人婷婷精品综合 | 国产日产欧美视频| 中文字幕亚洲综合久久五月天色无吗'' | 欧美久久久久久久久久久久久| 欧美午夜精彩| 久久久久久久有限公司| 国产精品日本一区二区不卡视频| 欧美亚洲成人xxx| 羞羞视频在线观看不卡| 亚洲午夜精品久久久久久性色 | 中日精品一色哟哟| 性欧美疯狂xxxxbbbb| 日本 欧美 国产| 久久毛片高清国产| 岛国精品资源网站| 国产精品888| 777一区二区| 久久综合网络一区二区| 久久99中文字幕| 欧美不卡高清| 做爰高潮hd色即是空| 国产乱码精品一区二区三区四区| 国产三级精品在线不卡| 国产精品2区| 国产精品中文字幕在线观看| 伊人久久国产| 午夜精品一区二区三区av| 伊人手机在线| 久久影视电视剧免费网站| 成人在线视频成人| 亚洲人成网站色ww在线| 五月天婷婷视频| 精品88久久久久88久久久| 精品国产九九九| 欧美一区二区三区色| 国产精品视频一区二区三区,| 欧美日韩一区二区三区四区五区| 五月天婷婷久久| 欧美视频在线看| 国产91精品一区| 色综合天天综合在线视频| 日韩黄色一级大片| 欧美性高跟鞋xxxxhd| 久久久久女人精品毛片九一| 欧美性色19p| 香蕉影院在线观看| 色婷婷av一区| 色偷偷男人天堂| 亚洲国产精品av| 91导航在线观看| 国产精品高潮久久久久无| 少妇太紧太爽又黄又硬又爽小说 | 精品爆乳一区二区三区无码av| 亚洲欧美成aⅴ人在线观看| 国产一二三四区| 亚洲精品美腿丝袜| 久久亚洲AV无码| 亚洲18色成人| 青青国产在线视频| 欧美午夜一区二区| 国产偷拍一区二区| 精品国产髙清在线看国产毛片| 丰满人妻一区二区三区四区53| 亚洲成年人在线播放| 亚洲色图 校园春色| 国产亚洲美女久久| 麻豆传媒在线完整视频| 欧美夫妻性生活视频| 国产白浆在线免费观看| 国产91在线高潮白浆在线观看| 日本精品裸体写真集在线观看| 成人福利在线视频| 91成人入口| 欧美日韩精品中文字幕一区二区| 成人羞羞网站入口免费| 国产精品h视频| 亚洲黄色视屏| 爱情岛论坛亚洲首页入口章节| 国精产品一区一区三区mba桃花 | 男女av免费观看| 九色综合狠狠综合久久| 日本少妇xxxx软件| 久久久久久免费网| 亚洲精品卡一卡二| 香蕉久久一区二区不卡无毒影院| 国产成人自拍偷拍| 日韩欧美国产麻豆| 黄色软件在线| 久久久久久久久国产| 欧美xxxx做受欧美护士| 亚洲一区二区三区久久| 女人av一区| 欧美日韩dvd| 水蜜桃久久夜色精品一区的特点| 91视频福利网| 国产欧美va欧美不卡在线| 欧美色图亚洲天堂| 日韩欧美亚洲一二三区| 国产一区二区网站| 日韩精品免费在线| 羞羞视频在线观看免费| 国产精品亚发布| 天堂99x99es久久精品免费| 强开小嫩苞一区二区三区网站| 亚洲在线视频| aaa黄色大片| 亚洲欧美自拍偷拍| 久草视频一区二区| 欧美精品一区二区三区蜜桃视频| 97超碰人人在线| 日本三级久久久| 国产成人av毛片| 国产专区在线视频| 美女精品自拍一二三四| 网站免费在线观看| 洋洋av久久久久久久一区| 一级片在线观看视频| 亚洲欧美色婷婷| sm捆绑调教国产免费网站在线观看 | 91亚洲精华国产精华精华液| 四虎免费在线视频| 欧美猛男男办公室激情| 成年人免费在线视频| 欧美最近摘花xxxx摘花| 国产精伦一区二区三区| 亚洲av首页在线| 国模一区二区三区白浆 | 亚洲综合区在线| 99产精品成人啪免费网站| 最近2019年手机中文字幕| 性欧美hd调教| 久久一区二区三区欧美亚洲| 雨宫琴音一区二区在线| 东京热av一区| 亚洲一区二区三区美女| 精品人妻少妇AV无码专区| 蜜臀久久99精品久久久久久宅男| 日韩成人在线一区| 一级二级三级欧美| 蜜桃视频第一区免费观看| 日本综合在线观看| 欧美在线视频日韩| 在线播放麻豆| 国产日韩在线看| 欧美激情偷拍自拍| 热久久久久久久久| 亚洲女与黑人做爰| 亚洲精品一区二区三区四区| 欧美黄色小视频| 国产精品丝袜在线播放| 2018国产在线| 2020国产精品| 97人妻一区二区精品视频| 国产午夜精品全部视频播放| 欧美日韩尤物久久| 中文字幕日韩精品久久| 国产在线精品国自产拍免费| 天天看片中文字幕| 精品成人一区二区| 国产免费不卡| 亚洲人成影视在线观看| 国产一区二区三区美女| 久久精品第一页| 日韩电影大全免费观看2023年上| 神马午夜在线视频| 日韩免费三级| 激情文学综合插| 国产精品99精品无码视| 亚洲欧美日韩精品久久亚洲区| 高清av一区二区三区| 黄色高清视频网站| 97久久久精品综合88久久| www.com亚洲| 久久精品2019中文字幕| 日韩中文在线| 国产一区亚洲二区三区| 国产精品色哟哟| 性做久久久久久久| 国产91精品久久久久久| 久久精品国产68国产精品亚洲| 在线视频一二区| 午夜精品福利视频网站| a黄色在线观看| 99re在线视频上| 久久亚洲国产精品一区二区| 三级全黄做爰视频| 亚洲激情小视频| 外国成人毛片| 黄色av网址在线播放| 国产精品不卡在线观看| 神马久久久久久久久久| 国产日韩精品视频| 亚洲清纯自拍| www.av免费| 亚洲人线精品午夜| 亚州一区二区| www.99av.com| 婷婷夜色潮精品综合在线| 在线免费观看黄| 欧美精品久久久| 国产+成+人+亚洲欧洲自线| 精人妻无码一区二区三区| 欧美高跟鞋交xxxxxhd| 欧美中文一区二区|