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)咨詢熱線:

          JavaScript數(shù)組填充fill函數(shù)

          大家使用數(shù)組估計(jì)最讓人厭煩的就是對(duì)數(shù)組進(jìn)行賦初值,要不就是手動(dòng)的進(jìn)行賦值要不就是使用for循環(huán)進(jìn)行賦值。在ES6中可以使用fill方法進(jìn)行數(shù)組的初始化。fill方法接收3個(gè)參數(shù),第一個(gè)參數(shù)是賦值的值為必要參數(shù),第二個(gè)參數(shù)是賦值開始的起始位置,第3個(gè)參數(shù)是賦值開始的終止位置此位置不會(huì)進(jìn)行賦值。

          當(dāng)只有第1個(gè)參數(shù)是默認(rèn)設(shè)置數(shù)組的所有值為參數(shù)1的值。

          當(dāng)只有第1,2兩個(gè)參數(shù)值設(shè)置從第2個(gè)值的位置到數(shù)組的末尾使用參數(shù)1的值進(jìn)行賦值。

          同時(shí)還需要注意的是不能對(duì)超出數(shù)組長(zhǎng)度的值進(jìn)行賦值。

          請(qǐng)看下面的演示程序。

          <!DOCTYPE html>
          <html>
              <head>
                  <title>數(shù)組的fill方法</title>
                  <meta charset="utf-8">
              </head>
              <body>
                  <textarea style="height: 500px;width: 300px;" id="value"></textarea>
              </body>
              <script>
                  let dom = document.getElementById("value");
                  let str=[]
                  let a=new Array(5);
                  str.push(`the init value is ${a}`);
                  a.fill(1);
                  str.push(`the a.fill(1) value is ${a}`);
                  a.fill(2,1);
                  str.push(`the a.fill(2,1) value is ${a}`);
                  a.fill(3,3,5);
                  str.push(`the a.fill(3,3,5) value is ${a}`);
                  a.fill(3,5,10);
                  str.push(`the a.fill(3,5,10) value is ${a}`);
                  a.length=10
                  a.fill(3,5,10);
                  str.push(`after set length is 10 the a.fill(3,5,10) value is ${a}`);
                  dom.value =str.join("\n");
              </script>
          </html>

          輸出結(jié)果為:



          從結(jié)果上我們可以看到上述的結(jié)論。但是使用fill對(duì)數(shù)組進(jìn)行賦值還是有一些局限性的,只能賦值一部分的位置的值為一個(gè)相同的值。

          JavaScript 中,我們往往會(huì)遇到需要使用某些默認(rèn)值來(lái)填充數(shù)組的情況,那么都有哪些方式可以完成這樣的任務(wù)呢?今天就為大家介紹 4 種填充數(shù)組的方式,并且會(huì)講解一下每一種方式的優(yōu)缺點(diǎn)。?

          ?Array.fill

          Array.fill 應(yīng)該是很直觀的一種方式。如下代碼所示,我們想要使用 "hello" 字符串把長(zhǎng)度為 10 的數(shù)組填充滿,代碼就像下面這樣:?

          ?上述代碼對(duì)于不可變的值,例如數(shù)值、字符串和布爾類型工作的很好。但是如果我們想要使用一個(gè)對(duì)象來(lái)填充呢??

          ?當(dāng)我們使用對(duì)象來(lái)填充一個(gè)數(shù)組的時(shí)候,數(shù)組里面的每個(gè)索引處填充的值指向的都是這同一個(gè)對(duì)象,所以如果我們修改對(duì)象的時(shí)候:?

          ?它將會(huì)把數(shù)組中的所有值都改變掉,大多數(shù)情況下這都不是我們想要的行為。所以如果想要填充對(duì)象的話,得需要借助 map 來(lái)為每一個(gè)槽位單獨(dú)填充對(duì)象才可以:?

          ?但是你應(yīng)該要考慮到,map 方法是一個(gè)代價(jià)比較高的方法。它會(huì)生成一個(gè)新的數(shù)組,而不是直接操作原來(lái)的數(shù)組,數(shù)據(jù)量一大的話,性能會(huì)急劇下降。所以可以試試其他方法。

          for 循環(huán)

          我們可以先創(chuàng)建一個(gè)數(shù)組:?

          ?然后使用一個(gè) for 循環(huán)一一賦值即可:?

          ?這樣可以避免使用 map 方法。

          Array.from

          另外一種可選的方式是使用 Array.from 方法。Array.from 方法可以讓你從一個(gè)像數(shù)組或可迭代的對(duì)象中創(chuàng)建數(shù)組。像數(shù)組的對(duì)象指的是這個(gè)對(duì)象有一個(gè) length 屬性,并且它的元素可以根據(jù)索引查詢到。可迭代對(duì)象就是像 Map 或 Set 一類的。下面這行代碼就將對(duì)象一一填充到數(shù)組的對(duì)應(yīng)位置:?

          ?展開(Spread)操作符

          最后一種方法是使用展開操作符:?

          ?使用展開操作符可以讓我們展開一個(gè)數(shù)組,然后從展開的數(shù)組中再創(chuàng)建一個(gè)新的數(shù)組。使用這種方式,我們避免了使用 fill 方法,但是我們依舊使用了 map 方法。

          結(jié)論

          上述填充數(shù)組的各種方法都有優(yōu)缺點(diǎn),不知道小伙伴們平常使用哪個(gè)方法來(lái)完成這個(gè)任務(wù)呢?

          html頁(yè)面中,所有可見的html標(biāo)簽元素都是由margin、padding、border 和內(nèi)容組成的,專業(yè)術(shù)語(yǔ)稱盒子模型框模型,后面統(tǒng)稱為盒子模型

          如下圖示例:

          盒子模型

          按F12鍵打開開發(fā)者工具,使用選擇元素工具(箭頭圖標(biāo)),隨便選擇一個(gè)html元素,在下方styles 面板上就會(huì)看到上圖的盒模型。

          在了解盒子模型前,讓我們先學(xué)習(xí)邊距、填充、和邊框。

          當(dāng)html元素沒有任何內(nèi)容或?qū)捀邽?時(shí),設(shè)置邊距、邊框、填充就沒有任何意義了,所以這些都是建立在有內(nèi)容的元素基礎(chǔ)上的。

          邊距、填充、和邊框

          因?yàn)槊恳粋€(gè)html元素都是一個(gè)盒子,它有上下左右四個(gè)面,所以邊距、填充、邊框?qū)傩孕枰O(shè)置四個(gè)方向的值,可以簡(jiǎn)寫也可以分開使用,語(yǔ)法如下:

          簡(jiǎn)寫語(yǔ)法:

          margin: 10px 15px 20px 12px
          padding: 10px 15px 20px 12px
          border: 1px solid #ff0000

          效果如下:

          margin和padding在簡(jiǎn)寫時(shí)是按照上、右、下、左的順時(shí)針?lè)较蛟O(shè)置值的,這4個(gè)值不是必須都要設(shè)置的,你可以設(shè)置一個(gè)、2個(gè)、3個(gè),但至少要一個(gè)值。

          如果設(shè)置一個(gè)值時(shí),其它方向都使用相同的值,如:

          margin:10px;
          padding:10px;

          效果如下:

          如果設(shè)置2個(gè)值時(shí),如:

          margin:10px 15px;
          padding:10px 15px;

          效果如下:

          如上可以看到,下、左邊距都是10px,下、左填充都是15px,缺省的方向會(huì)以使用反方向的值,同理當(dāng)設(shè)置3個(gè)屬性值時(shí)一樣,缺省的那個(gè)會(huì)默認(rèn)使用反方向的值。

          拆分寫法:

          /*邊距*/
          margin-top: 10px;
          margin-right:15px;
          margin-bottom:20px;
          maring-left:12px;
          /*填充*/
          padding-top: 10px;
          padding-right:15px;
          padding-bottom:20px;
          padding-left:12px;
          /*邊框*/
          border-top: 1px solid #ff0000;
          border-right: 1px solid #ff0000;
          border-bottom: 1px solid #ff0000;
          border-left: 1px solid #ff0000;

          分開寫法和簡(jiǎn)寫的效果是一樣的,這里注意邊距、填充只有一個(gè)屬性值,而邊框有三個(gè)屬性值:邊框大小、邊框樣式、邊框顏色,所以邊框更加復(fù)雜點(diǎn),邊框還可以按照不同屬性單獨(dú)設(shè)置。

          1、css 邊距 —— margin

          邊距(margin)是指從邊框邊界向外的距離,為元素周圍創(chuàng)建空間,它是透明的,如下箭頭所示

          邊距的重疊現(xiàn)象,當(dāng)相鄰的html元素都有邊距時(shí),會(huì)出現(xiàn)邊距重疊而不是相加的效果,如下示例:

          可以看到,盒子1的下邊距和盒子2的上邊距重疊了,它們的上下間距是10px,而不是20px。如果盒子1和盒子2的邊距值不一樣時(shí)也會(huì)重疊,只不過(guò)它們的間距會(huì)以其中最大的那個(gè)值顯示,如下:

          2個(gè)盒子上下間距實(shí)際以盒子2的邊距顯示,因?yàn)楹凶?邊距大于盒子1的邊距。

          2、css 填充 —— padding

          填充就是從邊框邊界向內(nèi)到元素內(nèi)容邊界的距離,如下綠色區(qū)域箭頭示例:

          3、css 邊框 —— border

          邊框border,不同于margin、padding,它是可見的默認(rèn)是有顏色的,如下示例:

          盒子1邊框?qū)挾?px,盒子2邊框?qū)挾?0px,都是紅色邊框,其盒模型圖如下:

          當(dāng)border為0時(shí),不顯示邊框。

          之前介紹了邊框的簡(jiǎn)寫方法,是按照方向分別設(shè)置邊框?qū)挾取邮健㈩伾?/p>

          border-top: 1px solid #ff0000;
          border-right: 1px solid #ff0000;
          border-bottom: 1px solid #ff0000;
          border-left: 1px solid #ff0000;

          因?yàn)檫吙蛴腥齻€(gè)屬性值:寬度、樣式、顏色,所以還可以按照不同屬性值設(shè)置,如下:

          border-color:red;
          border-style:solid;
          border-width:10px;

          當(dāng)按照屬性值的維度設(shè)置的時(shí)候,同樣可以繼續(xù)按照方向拆分設(shè)置,如下:

          設(shè)置邊框?qū)挾龋?/strong>

          四個(gè)方向都是一樣的邊框?qū)挾龋?/p>

          border-width:10px;

          分別設(shè)置每個(gè)方向的寬度:

          border-top-width:10px;
          border-right-width:15px;
          border-bottom-width:12px;
          border-left-width:5px;

          如下顯示效果:

          設(shè)置邊框樣式

          樣式分別有 dotted(虛線) 、solid(實(shí)線) 、double(雙線) 、dashed(虛線)4個(gè)樣式,如下:

          四個(gè)方向都是一樣的邊框樣式:

          border-style: solid;

          分別設(shè)置每個(gè)方向邊框樣式:

          border-top-style:solid;
          border-right-style:dotted;
          border-bottom-style:double;
          border-left-style:dashed;

          如下效果:

          當(dāng)邊框?qū)挾葹?時(shí),設(shè)置邊框樣式或顏色是無(wú)效的。

          設(shè)置邊框顏色

          四個(gè)方向都是一樣的顏色:

          border-color: red;

          分別設(shè)置每個(gè)方向的顏色:

          border-top-color:red;
          border-right-color:blue;
          border-bottom-color:green;
          border-left-color:orang;

          顯示效果:

          當(dāng)邊框?qū)挾葹?時(shí),設(shè)置邊框樣式或顏色是無(wú)效的。

          盒子的實(shí)際大小

          一個(gè)html元素在頁(yè)面中顯示的實(shí)際寬高并一定等于它的width和height屬性設(shè)置的值。

          標(biāo)準(zhǔn)盒模型

          標(biāo)準(zhǔn)盒模型的width/height 不包含padding和border

          如下圖:

          盒子1的實(shí)際顯示尺寸等于height + border + padding之和,如圖中盒子1占據(jù)的空間:高度126 = 100 + 20 + 6,寬度 136 = 100 + 30 + 6。

          非標(biāo)準(zhǔn)盒模型

          比如在之前Ie瀏覽器中,width/height 包含了padding和border

          這里使用box-sizing: border-box模擬非標(biāo)準(zhǔn)盒模型。

          如下圖:

          可以看到,padding 和 border 被包含到寬度和高度里了。

          如果想要改變盒子的計(jì)算方式可以使用 CSS Box Sizing 。

          當(dāng)box-sizing: border-box,是非標(biāo)準(zhǔn)盒模型。

          當(dāng)box-sizing: content-box(瀏覽器默認(rèn)),為標(biāo)準(zhǔn)盒模型。

          總結(jié)

          1、盒子模型的概念,由邊距、邊框、填充和元素內(nèi)容組成。

          2、邊距、填充和邊框的語(yǔ)法使用,簡(jiǎn)寫、拆分使用、按方向或?qū)傩灾稻S度單獨(dú)使用。

          3、html元素實(shí)際顯示寬度和高度計(jì)算方法。

          4、標(biāo)準(zhǔn)盒模型和非標(biāo)準(zhǔn)盒模型的區(qū)別。

          總而言之,css盒子模型是學(xué)習(xí)css的基礎(chǔ)知識(shí),后面一切都是建立在盒子模型之上的,所以要完全理解它,感謝關(guān)注,祝學(xué)習(xí)愉快。

          上一篇:前端入門——css 選擇器


          主站蜘蛛池模板: 暖暖免费高清日本一区二区三区| 不卡一区二区在线| 久久毛片一区二区| 国产福利一区二区三区视频在线| 久久综合精品国产一区二区三区| 一区二区三区在线播放| 中文字幕一区二区三| 久久亚洲AV午夜福利精品一区| 国产一区二区精品久久| 精品无码成人片一区二区98| 天海翼一区二区三区高清视频| 最新中文字幕一区| 日韩精品一区二区三区中文字幕 | 日本精品视频一区二区三区| 国产成人一区二区三区电影网站| 极品少妇伦理一区二区| 日本道免费精品一区二区| 亚洲AV午夜福利精品一区二区| 精品久久一区二区三区| 国精产品一区一区三区有限在线| 国模大胆一区二区三区| 中文字幕一区二区三区在线不卡| 国产成人无码精品一区二区三区 | 日本人的色道www免费一区| 日本美女一区二区三区| 无码一区二区三区在线观看| 国产精品99精品一区二区三区| 色欲AV无码一区二区三区| 国产精品va无码一区二区| 久久精品日韩一区国产二区| 香蕉视频一区二区三区| 亚洲大尺度无码无码专线一区| 日韩一区二区三区在线精品| 亚洲一区二区三区AV无码| 蜜桃AV抽搐高潮一区二区| 国产无套精品一区二区| 国产精品成人99一区无码| 无码乱人伦一区二区亚洲一| 精品一区二区三区视频| 国产一区二区三区韩国女主播| 日韩一区二区三区精品|