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
在 C# 中,取整運(yùn)算很簡單,直接用斜杠/就能取到兩數(shù)相除的整數(shù)。而在 javascript 中,用斜杠/取整卻得到小數(shù),也就是說javascript 并沒有像 C# 一樣把斜杠作為專門的取整運(yùn)算符,那么在 javascript 中應(yīng)該如何取整?
在 C# 中,取模用百分號%,即 a%b 表示取a除b所得的余數(shù),如果a除b能整除,則 a%b 結(jié)果為0。在 javascript 中,取模方法與C# 相同,也是用百分號%,上面 a%b 在 javascript 中同樣成立。
一、javascript取整運(yùn)算
在 javascript 中,直接用斜杠/取整會得到小數(shù),所以用斜杠運(yùn)算之后還要轉(zhuǎn)為整型才能達(dá)到目的;取整運(yùn)算舉例如下:
結(jié)果:2
如果不用 parseInt() 轉(zhuǎn)為整型,結(jié)果為 2.66666……,所以取整一定不要忘了加上 parseInt(),否則取不到整數(shù)。
二、javascript取模運(yùn)算
javascript 取模運(yùn)算跟 C 家族編程語言一樣都用百分號符%,不像取整還需要轉(zhuǎn)為整數(shù)才能獲取正確的結(jié)果,javascript取模運(yùn)算舉例如下:
結(jié)果:2
這個(gè)結(jié)果是正確的,跟取整的結(jié)果一樣,8除3取整與取模結(jié)果都2。取整與取模主要在數(shù)學(xué)運(yùn)算的時(shí)候用到,在網(wǎng)頁前端設(shè)計(jì)過程中用得不是很多,但偶爾會遇到,比如動(dòng)態(tài)顯示上傳圖片就會用到。
ello,暖寶又來了,最近在忙學(xué)習(xí)與列年度計(jì)劃,不知道大家有沒有列今年的年度計(jì)劃呢?今天給大家聊一下js里的%
例如:5%3=2,可以把“%”看成是咱們數(shù)學(xué)運(yùn)算中的除號
當(dāng)然這個(gè)也用到平時(shí)的js編程中
json中的for in數(shù)據(jù)遍歷
舉例:
<script type="text/javascript">
var json_obj_data =
{
"40":{"title":"all" , "name" :"all promotions" ,"id" :"all"},
"20":{"title":"best_room_rate" , "name" : "best room rate" , "id" : "best_room_rate"},
"10":{"title":"summer rate" , "name" : "summer rate" , "id" : "30"}
}
for(var data in json_obj_data){
alert(data);
}
</script>
記得關(guān)注右上角的暖夕H2
家有沒有對 CSS 中的百分比是如何工作的感興趣?有沒有想過,為什么它有時(shí)會亂七八糟,沒啥頭緒?反正我是有,所以今天分享這篇文章,對自己來說是加深理解,同時(shí)也希望對大家有所幫助。
作為百分比,顯然應(yīng)該有一個(gè)目標(biāo)作為參考源,這個(gè)參考一般是父元素。這是正確的,但并不涵蓋所有情況。最正確的答案應(yīng)該是包含塊(containing block),即包含我們元素的塊且它不必是直接的父元素。
看看下面的例子:
代碼:
<div class="grandparent">
<div class="parent">
<div class="child"></div>
</div>
</div>
.grandparent {
position: relative;
width: 200px;
height: 200px;
background: #eaeaea;
}
.parent {
width: 100px;
height: 100px;
background: #aaa;
}
.child {
position: absolute;
width: 50%;
height: 50%;
top: 25%;
left: 25%;
background: red;
}
在上面的例子中,我創(chuàng)建了 3 個(gè)嵌套 div,它們是具有以下特征的3個(gè)正方形
如果百分比單位以父級為來源,則子級的大小應(yīng)該是它的 1/2,但上面的不是,子級的大小實(shí)際上等于父級,也就是祖父級的 1/2。原因是祖父級 div 是子級 div 的真正包含塊,因?yàn)樽蛹壘哂?position: absolute ,對應(yīng)于在祖父級中設(shè)置的 position:relative 。
因此,為了確定哪個(gè)是元素的實(shí)際包含塊,它完全基于元素本身的 position 屬性。
但是,對于某些屬性,百分比單元的引用源既不是父塊也不是包含塊,而是它本身—— 自身元素。
如上面的例子中看到的,當(dāng)一個(gè)元素為其寬度分配一個(gè)百分比值時(shí), width 是基于包含塊的width, height 是基于包含塊的 height。
對于 padding,垂直(padding-top/padding-bottom)或水平(padding-left/padding-right)都是基于包含塊的 wdith 來計(jì)算。
來個(gè)例子:
<div class="parent">
<div class="child"></div>
</div>
.parent {
background: #eaeaea;
width: 300px;
height: 200px;
}
.child {
display: inline-block;
background: red;
padding-top: 50%;
padding-left: 50%;
}
.parent {
position: relative;
}
線上地址:https://codepen.io/khangnd/pen/powbjEL
在這個(gè)例子中:
最后的結(jié)果是,子元素的大小相當(dāng)于父級元素 1/2寬度,也就是一個(gè) 3x3 的正方形。
與 padding,margin 的百分比(垂直和水平)也是相對于包含塊的寬度來計(jì)算。
來個(gè)事例:
<div class="parent">
<div class="child"></div>
</div>
.parent {
background: #eaeaea;
width: 300px;
height: 200px;
}
.child {
display: inline-block;
background: red;
width: 50px;
height: 50px;
margin-top: 50%;
margin-left: 50%;
}
在這個(gè)例子中:
其結(jié)果是,子元素被定位在離父級元素的上邊距和左邊距3個(gè)單位的地方(父級寬度的1/2)。
top、bottom基于包含塊的height來計(jì)算,left、right 基于包含塊的width來計(jì)算。
來個(gè)例子:
<div class="parent">
<div class="child"></div>
</div>
.parent {
position: relative;
background: #eaeaea;
width: 300px;
height: 200px;
}
.child {
position: absolute;
background: red;
width: 16.67%;
height: 25%;
top: 50%;
left: 50%;
}
在這個(gè)事例中:
最終結(jié)果,子 div 被定位在離父 div 的頂部邊緣 2個(gè)單位的位置(父 div 高度的 1/2),并被定位在離父 div 的左側(cè)邊緣 3 個(gè)單位的位置(父 div 寬度的 1/2)。
一個(gè)用于動(dòng)畫/過渡的不可思議的屬性,它也支持百分比值。然而,這個(gè)屬性并不指其包含的塊,而是指其自身。
來個(gè)例子:
<div class="parent">
<div class="child"></div>
</div>
.parent {
background: #eaeaea;
width: 300px;
height: 200px;
}
.child {
background: red;
width: 100px;
height: 50px;
transform: translate(50%, 50%);
}
在這個(gè)事例中:
最后結(jié)果,子 div 被定位在離父 div 的頂部邊緣 0.5 個(gè)單位的位置(自身高度的 1/2),并被定位在離父 div 的左側(cè)邊緣 1 個(gè)單位的位置(自身寬度的 1/2)。
background-size 屬性將百分比單元的復(fù)雜性提升到一個(gè)新的水平
此屬性的百分比值指的是背景定位區(qū)域,類似于包含塊,但添加了以下 3 個(gè)因素:
這三個(gè)值是由 background-origin 給出,具體看 MDN :https://developer.mozilla.org/zh-CN/docs/Web/CSS/background-origin
來個(gè)例子:
<div class="parent">
<div class="child"></div>
</div>
.parent {
background: #eaeaea;
width: 300px;
height: 200px;
}
.child {
background-image: url(https://d2fltix0v2e0sb.cloudfront.net/dev-rainbow.png);
background-size: 50% 50%;
background-repeat: no-repeat;
background-color: red;
width: 50%;
height: 50%;
}
在這個(gè)例子中:
其結(jié)果是,背景圖像被拉伸為 1.5 x 1 的大小。
與 background-size 類似,background-position 屬性的百分比也依賴于背景定位區(qū)域。
在這個(gè)例子中:
<div class="parent">
<div class="child"></div>
</div>
css
.parent {
background: #eaeaea;
width: 300px;
height: 200px;
}
.child {
background-image: url(https://d2fltix0v2e0sb.cloudfront.net/dev-rainbow.png);
background-size: 50% 50%;
background-position: 50% 50%;
background-repeat: no-repeat;
background-color: red;
width: 50%;
height: 50%;
}
在本例中,使用了與前面相同的圖像和布局。當(dāng)我們改變background-position的值時(shí),可以看到一些變化:
注意:background-position: 0 50% 是下面的縮寫
顯然,這個(gè)屬性的百分比背后有一些計(jì)算,而不僅僅是圖像的頂部和左側(cè)邊緣與孩子的距離。通過一些研究和測試,似乎 background-position 屬性在產(chǎn)生一個(gè)實(shí)際值之前依賴于以下計(jì)算。
offset X = (容器的寬度-圖像的寬度) * background-position-x offset Y = (容器的高度-圖像的高度) * background-position-y
在這種情況下:
對于 font-size ,百分比值僅指向它的直接父塊。
來個(gè)例子:
<div class="grandparent">
font-size: 13px
<div class="parent">
font-size: 26px
<div class="child">font-size: 50%
</div>
</div>
在這個(gè)例子中,我使用與第一個(gè)例子相同的布局,字體大小分配如下。
我們可以清楚地看到,child 的字體大小現(xiàn)在與 grandparent 一樣,是 parent 的1/2。
線上地址:https://codepen.io/khangnd/pen/MWoeXMO
~~ 完,最近一個(gè)禮拜都在趕項(xiàng)目,基本都要2點(diǎn)后才能睡,這篇文章是間斷整理好的,現(xiàn)在時(shí)間 是 9/20 深夜3點(diǎn),睡了,感謝大家的觀看。
作者:Khang 譯者:前端小智 來源:dev 原文:https://dev.to/khgnd/understanding-css-percentage-44gd
*請認(rèn)真填寫需求信息,我們會在24小時(shí)內(nèi)與您取得聯(lián)系。