Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 天天操天天插天天干,韩国一级片视频,国内精品免费久久久久妲己

          整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          小猿圈web前端解析CSS怎么從圖片中摳出一部分

          小猿圈web前端解析CSS怎么從圖片中摳出一部分

          于學(xué)習(xí)前端的小伙伴來(lái)說(shuō)css是不是一點(diǎn)都不陌生呢,從開(kāi)始學(xué)習(xí)前端就接觸的css你真的熟練了嗎?今天小猿圈web前端講師講解怎么從CSS圖片中摳出一部分(雪碧圖)。

          這里咱們會(huì)用到一個(gè)css屬性:background-position。

          按照字面理解,這個(gè)屬性就是背景定位,下面咱們來(lái)具體操作一下:

          咱們拿到一個(gè)圖:

          HTML結(jié)構(gòu)是:

          <div></div>

          CSS代碼是:

          div{

          background: url('bg.png') no-repeat;

          }

          比如咱們現(xiàn)在想要哪個(gè)手機(jī),通過(guò)ps測(cè)量到哪個(gè)手機(jī)到尺寸是,寬度(10px)、高度(16px),那么咱們調(diào)整一下css:

          div{

          background: url('bg.png') no-repeat;

          width:10px;

          height: 16px;

          }

          運(yùn)行結(jié)果:

          手機(jī)這個(gè)小圖混雜在大圖中,想提取出來(lái),需要用background-position屬性,background-position它有兩個(gè)參數(shù),分別是水平方向移動(dòng)的像素、豎直方向移動(dòng)的像素,都用負(fù)數(shù)表示。

          因此,只要找到小圖相對(duì)于大圖左上角頂點(diǎn)的水平移動(dòng)像素、豎直移動(dòng)像素就可以了。

          經(jīng)過(guò)測(cè)量以后的css調(diào)整為:

          div{

          background: url('bg.png') no-repeat;

          width:10px;

          height: 16px;

          background-position: -299px -243px;

          }

          以上就是小猿圈web前端老師針對(duì)雪碧圖的簡(jiǎn)單介紹,對(duì)于你熟悉的css是否有了新的理解了呢,那還在等什么,快去行動(dòng)呀,記得如果遇到了不懂問(wèn)題可以到小猿圈尋找答案,里面有最新最全面的視頻等著你去學(xué)習(xí)。

          篇文章我們講解了webpack中的loader,并且使用less、less-loader、css-loader、style-loader,將一個(gè)在js中import的less文件通過(guò)webpack將樣式打包到了頁(yè)面中,但是我們發(fā)現(xiàn),頁(yè)面中樣式確實(shí)是有了,但是頁(yè)面的樣式是通過(guò)style標(biāo)簽的形式寫(xiě)入到了頁(yè)面中,在實(shí)際開(kāi)發(fā)中我們其實(shí)更傾向于使用link標(biāo)簽導(dǎo)入樣式,這時(shí)候應(yīng)該怎么做呢?

          一、使用mini-css-extract-plugin插件

          這個(gè)插件能將CSS提取為獨(dú)立的文件,對(duì)每個(gè)包含css的js文件都會(huì)創(chuàng)建一個(gè)CSS文件,支持按需加載css和sourceMap。

          首先安裝插件

          cnpm install mini-css-extract-plugin --save-dev
          

          安裝完插件后其實(shí)就是設(shè)置了,下面是簡(jiǎn)單的設(shè)置信息:

          const { CleanWebpackPlugin }=require('clean-webpack-plugin');
          const HtmlWebpackPlugin=require('html-webpack-plugin');
          const MiniCssExtractPlugin=require('mini-css-extract-plugin');
          module.exports={
           mode:"development",
           entry:{
           "common":"./src/js/common.js",
           "index":"./src/js/index.js",
           "login":"./src/js/login.js"
           },
           output:{
           filename:"js/[name].js",
           },
           plugins:[
           new CleanWebpackPlugin(),
           new HtmlWebpackPlugin({
           template:'./src/index.html',
           filename:'index.html',
           chunks:["common","index"],
           hash:true
           }),
           new HtmlWebpackPlugin({
           template:'./src/login.html',
           filename:'login.html',
           chunks:["common","login"],
           hash:true
           }),
           new MiniCssExtractPlugin({
           filename:'css/[name].css',
           chunkFilename:'[id].css'
           })
           ],
           module:{
           rules:[
           // {
           // test:/\.less$/,
           // use:[
           // {loader:"style-loader"},
           // {loader:"css-loader"},
           // {loader:"less-loader"}
           // ]
           // }
           {
           test:/\.less$/,
           use:[
           {
           loader:MiniCssExtractPlugin.loader
           },
           "css-loader",
           "less-loader"
           ]
           },
           ]
           }
          }
          

          在webpack.config.js中我們首先定義插件,然后在plugins項(xiàng)中實(shí)例化插件(前面講到了插件需要安裝、定義、實(shí)例化三步),最后在module中定義處理less的規(guī)則,注釋掉的部分是講解loader的時(shí)候使用的,沒(méi)刪掉是要做個(gè)比較。

          plugins項(xiàng)中mini-css-extract-plugin的實(shí)例化參數(shù)filename其實(shí)和output,html-webpack-plugin中定義的filename,完全一樣,就是給輸出文件起名字(有人可能會(huì)說(shuō)不是在output中定義了嗎,其實(shí)webpack入口與輸出只是js,其他的是靠插件或者loader來(lái)處理,所用不要弄混)。

          chunkFilename和html-webpack-plugin中的chunk類似,但是后面的[id].css不好理解(實(shí)在明白就這樣寫(xiě)就行,固化的不會(huì)變),其實(shí)這個(gè)地方?jīng)]法寫(xiě)實(shí)際具體的名字的,因?yàn)檫@是下面的loader中mini-css-extract-plugin插件內(nèi)部自己產(chǎn)生的。

          再來(lái)看rules中的定義,我們?nèi)サ袅藄tyle-loader,因?yàn)槲覀儾皇且褬邮綄?xiě)的頁(yè)面中,我們是希望link單獨(dú)的css文件。規(guī)則的意思就是遇到j(luò)s中導(dǎo)入的以.less為結(jié)尾的文件使用less-loader來(lái)處理,然后轉(zhuǎn)換成css,然后讓css-loader處理樣式內(nèi)部的一些關(guān)于url,或者@import等一些css的問(wèn)題,然后交給下一個(gè)loader,這個(gè)時(shí)候的loader變成了mini-css-extract-plugin中的loader了,這個(gè)laoder就是將css單獨(dú)提取出來(lái)放入頁(yè)面中,如下圖:

          二、處理圖片資源

          頁(yè)面中有三種圖片的引用方式,一種是html頁(yè)面中的 img標(biāo)簽,一種是樣式中類似background:url(),一種是是腳本中創(chuàng)建圖片并插入頁(yè)面的。那么我們就將這三種方式都嘗試一下。項(xiàng)目目錄如下圖:

          增加了三個(gè)圖片,其實(shí)就是一個(gè)圖片就是名字不一樣而已。然后分別修改less文件,js文件,html文件,各個(gè)文件內(nèi)容如下:

          index.less

          index.js

          index.html

          圖片資源的處理有很多l(xiāng)oader可以用,這里我們使用url-loader,對(duì)于頁(yè)面中的img標(biāo)簽,我們使用html-withimg-loader。

          安裝loader:

          cnpm install url-loader html-withimg-loader --save-dev

          然后配置webpack.config.js:

          const { CleanWebpackPlugin }=require('clean-webpack-plugin');
          const HtmlWebpackPlugin=require('html-webpack-plugin');
          const MiniCssExtractPlugin=require('mini-css-extract-plugin');
          module.exports={
           mode:"development",
           entry:{
           "common":"./src/js/common.js",
           "index":"./src/js/index.js",
           "login":"./src/js/login.js"
           },
           output:{
           filename:"js/[name].js",
           },
           plugins:[
           new CleanWebpackPlugin(),
           new HtmlWebpackPlugin({
           template:'./src/index.html',
           filename:'index.html',
           chunks:["common","index"],
           hash:true
           }),
           new HtmlWebpackPlugin({
           template:'./src/login.html',
           filename:'login.html',
           chunks:["common","login"],
           hash:true
           }),
           new MiniCssExtractPlugin({
           filename:'css/[name].css',
           chunkFilename:'[id].css'
           })
           ],
           module:{
           rules:[
           {
           test:/\.less$/,
           use:[
           {
           loader:MiniCssExtractPlugin.loader,
           options:{
           publicPath:"../"
           }
           },
           "css-loader",
           "less-loader"
           ]
           },
           {
           test:/\.(png|svg|jpg|gif)$/,
           use:[
           {
           loader:'url-loader',
           options:{
           limit:10240,
           name:"imgs/[name].[ext]",
           }
           }
           ]
           },
           {
           test:/\.(htm|html)$/,
           use:["html-withimg-loader"]
           }
           ]
           }
          }
          

          這里需要注意幾點(diǎn):

          第一、minicssextractplugin中添加了一個(gè)配置publicPath,為什么不把它放到output中?因?yàn)閛utput中的pubicPath會(huì)影響所有路徑。這里面我們只是想讓css-loader處理完css后只解決樣式表里的路徑問(wèn)題。

          第二、url-loader,limit參數(shù),當(dāng)圖片文件小于10K的時(shí)候,將文件轉(zhuǎn)換成dataUrl格式的圖片減少鏈接請(qǐng)求,name參數(shù)就是生成的文件名稱,當(dāng)然前面的imgs是dist目錄下的imgs文件夾。

          第三、遇到html或者h(yuǎn)tm結(jié)尾的文件時(shí)使用html-withimg-loader處理里面的圖片資源。

          前端的模塊化開(kāi)發(fā)不建議在頁(yè)面中直接使用圖片鏈接,要在js中導(dǎo)入圖片,但我感覺(jué)不太現(xiàn)實(shí),畢竟img標(biāo)簽不是擺設(shè)。

          接下來(lái)運(yùn)行 npx webpack命令,效果如下:

          我們的圖片是50多K大小所以dist目錄下生成了imgs文件夾,并且將src中的圖片考了過(guò)來(lái)。

          如果我們將limit的值改為102400后,圖片將直接轉(zhuǎn)換成dataurl格式,不在保存到dist目錄下,入下圖:

          我們可以發(fā)現(xiàn)他們的鏈接地址是有區(qū)別的。

          三、總結(jié)

          我們分了五節(jié)內(nèi)容簡(jiǎn)單的描述了webpack4最基本的一些知識(shí)點(diǎn),主要包括:

          1、安裝

          前提條件安裝node

          在項(xiàng)目中使用npm init -y,初始化項(xiàng)目,主要是創(chuàng)建了一個(gè)package.json的文件,用來(lái)記錄項(xiàng)目信息以及依賴關(guān)系。

          為了避免插件或者loader下載不了,介紹了cnpm。

          2、入口與輸出

          webpack.config.jswebpack的配置文件

          npx webpack運(yùn)行webpack的命令

          最基本的入口與輸出的概念

          3、插件

          clear-webpack-plugin 清除dist目錄的插件

          html-webpack-plugin 簡(jiǎn)化html創(chuàng)建的一個(gè)插件,并且關(guān)聯(lián)js

          mini-css-extract-plugin 單獨(dú)提起css為文件的插件

          4、加載器(loader)

          model模式(開(kāi)發(fā)模式,產(chǎn)品模式)

          less-loader、css-loader、style-loader、url-loader、html-withimg-loader

          這些知識(shí)點(diǎn)只是讓初學(xué)者快速的跑起來(lái)一個(gè)webpack,避免踩坑,在實(shí)際的項(xiàng)目中遇到問(wèn)題時(shí)可以知道具體知道從哪方面入手來(lái)解決問(wèn)題。

          如果內(nèi)容中有錯(cuò)誤,歡迎大家指正。謝謝!

          網(wǎng)站設(shè)計(jì)編輯中,我們會(huì)往往取網(wǎng)上找圖片素材,但是呢,找到的圖片素材都在一張圖片上,就比如說(shuō)圖標(biāo),圖片如下:

          圖標(biāo)合集

          如果讓你只取其中一個(gè)圖標(biāo),你是否在想用軟件分割呢,其實(shí)并不用,css就可以實(shí)現(xiàn)只取其中之一并且不需要裁剪,步驟如下:

          第一步:量出圖標(biāo)大小以及圖標(biāo)左上角位置

          這里我們?nèi)〉谝恍械诙€(gè)圖標(biāo)顯示,圖標(biāo)大小37X38,左上角位置為:82X22

          第二步:設(shè)置顯示div的大小為圖標(biāo)大小

          <html>

          <body>

          <style> .show{ width:37px; height:38px; } </style>

          <div class="show"></div>

          </body>

          </html>

          第三步:設(shè)置div的背景圖片為圖標(biāo)素材,并且顯示圖片素材中第二個(gè)圖標(biāo)的位置

          <html>

          <body>

          <style>

          .show{ background:transparent url(/images/2.png) no-repeat scroll -82px -22px ; width:37px; height:38px; }

          </style>

          <div class="show"></div>

          </body>

          </html>

          顯示如下:

          是不是很神奇,其實(shí)主要靠的是其中

          background:transparent url(/images/2.png) no-repeat scroll -82px -22px ;

          其中

          background:transparent表示div背景透明,然后

          url(/images/2.png)表示設(shè)置div的背景為圖標(biāo)素材圖片

          no-repeat 表示圖片不重復(fù)

          scroll -82px -22px 表示背景圖片左邊移動(dòng)82個(gè)像素,向上移動(dòng)22個(gè)像素,也就是說(shuō)從x:82px y:22px開(kāi)始顯示圖片

          然而div只有一個(gè)圖標(biāo)的大小,所以顯示出來(lái)的就只有一個(gè)圖標(biāo)大小,其余部分均為不可見(jiàn)。

          如此就實(shí)現(xiàn)了CSS讓圖片只顯示一部分,也就相當(dāng)于摳圖的功能。


          主站蜘蛛池模板: 无码精品尤物一区二区三区| 中文字幕AV无码一区二区三区| 亚洲AV综合色一区二区三区| 99精品一区二区三区无码吞精| 一区二区精品久久| 日韩一区二区在线观看视频| 色狠狠一区二区三区香蕉蜜桃| 亚洲AV无码一区二区三区鸳鸯影院| 亚洲午夜精品一区二区| 国产综合一区二区在线观看| 日本一区二区三区免费高清在线| 亚洲AV日韩综合一区尤物| 亚洲综合在线成人一区| 国产在线一区二区综合免费视频 | 亚洲AV色香蕉一区二区| 一区二区三区高清视频在线观看| 在线观看一区二区精品视频| 亚洲AV噜噜一区二区三区| 国产精品亚洲一区二区麻豆| 亚洲一区在线免费观看| 成人精品一区二区户外勾搭野战| 91在线一区二区三区| 99无码人妻一区二区三区免费 | 亚洲一区二区三区在线观看精品中文| 福利片免费一区二区三区| 国产aⅴ一区二区| 亚洲国产高清在线一区二区三区 | 亲子乱av一区区三区40岁| 久久精品无码一区二区WWW| 国产精品久久久久久麻豆一区| 国产成人久久精品区一区二区 | a级午夜毛片免费一区二区 | 合区精品久久久中文字幕一区| 欧洲精品一区二区三区在线观看| 日韩精品电影一区亚洲| 农村人乱弄一区二区| 中文字幕日韩一区| 日韩精品中文字幕视频一区 | 少妇特黄A一区二区三区| 老熟女高潮一区二区三区| 成人精品一区二区三区电影|