android平均分布
⑴ Android中如何實現5個按鈕平均分布並放在底部,並在拉動List時,按鈕固定在底部不動
在布局器中將按鈕都加進去,然後再代碼中根據情況來設置按鈕是否可見:
setVisibility(View.INVISIBLE)
給按鈕添加一個listener,就可以得到點擊事件。
⑵ 初學安卓就遇到費解的問題,望大神們給予解答
<linearlayout android:gravity="bottom" android:orientation="horizontal">
<linerlayout layout_weight="1">
</linearlayout>
<linerlayout layout_weight="1">
</linearlayout>
<linerlayout layout_weight="1">
</linearlayout>
<linerlayout layout_weight="1">
</linearlayout>
</linearlayout>
----------------------------------------------------
在主 linearlayout 里嵌套 4 個子linearyout ,每個子 linearlayout 的權重都一樣為 1 。
在預覽里出現4個子 linearlayout 正如預想的一樣平均分布。
但是當運行程序後問題就出現了,屏幕上只顯示前兩個 子linearlayout 。
重點就是在 graphical Layout 裡面的預覽是正常的。程序運行出來就不一樣了。
很費解啊,求大神指教啊!
(以上代碼為大概內容,具體子linearlayout內還有部分內容未在此寫出)
⑶ WPS怎樣平均分布各行、各列
有兩個方法,可以手動調整,也可以使用命令精確調整。
手動:選中需要調整的行號(列標),拖動其中兩行(列)交界線,調整一個單元格的高(寬),其它單元格就自動調整成一樣大小的了。
另一個方法是,選中需要調整的行號(列標),選擇【開始】選項卡中的【行和列】命令,其中有【行高】和【列寬】的相關命令,輸入准確的數值就可以調整了。
⑷ android我想用代碼把一個按鈕頂到最右邊怎麼做
在他的父級標簽上加個樣式屬性:text-align:center;
以下為簡例,居中可以理解為,文本內容或者文本元素在指定范圍內居中顯示,這些都是樣式排版基礎,你可以上w3school多學習下
<td align=center><input type="button" name="按鈕一" value="按鈕一" /></td>
<div style="text-align:center; width:200px;"><input type="button" name="按鈕一" value="按鈕一" /></div>
text-align 屬性規定元素中的文本的水平對齊方式。
該屬性通過指定行框與哪個點對齊,從而設置塊級元素內文本的水平對齊方式。通過允許用戶代理調整行內容中字母和字之間的間隔,可以支持值 justify;不同用戶代理可能會得到不同的結果。
默認值:
如果 direction 屬性是 ltr,則默認值是 left;如果 direction 是 rtl,則為 right。
繼承性:
yes
版本:
CSS1
JavaScript 語法:
object.style.textAlign="right"
可能的值
值
描述
left 把文本排列到左邊。默認值:由瀏覽器決定。
right 把文本排列到右邊。
center 把文本排列到中間。
justify 實現兩端對齊文本效果。
inherit 規定應該從父元素繼承 text-align 屬性的值。
值 justify
最後一個水平對齊屬性是 justify,它會帶來自己的一些問題。
值 justify 可以使文本的兩端都對齊。在兩端對齊文本中,文本行的左右兩端都放在父元素的內邊界上。然後,調整單詞和字母間的間隔,使各行的長度恰好相等。您也許已經注意到了,兩端對齊文本在列印領域很常見。不過在 CSS 中,還需要多做些考慮。
要由用戶代理(而不是 CSS)來確定兩端對齊文本如何拉伸,以填滿父元素左右邊界之間的空間。例如,有些瀏覽器可能只在單詞之間增加額外的空間,而另外一些瀏覽器可能會平均分布字母間的額外空間(不過 CSS 規范特別指出,如果 letter-spacing 屬性指定為一個長度值,「用戶代理不能進一步增加或減少字元間的空間」)。還有一些用戶代理可能會減少某些行的空間,使文本擠得更緊密。所有這些做法都會影響元素的外觀,甚至改變其高度,這取決於用戶代理的對齊選擇影響了多少文本行。
CSS 也沒有指定應當如何處理連字元。大多數兩端對齊文本都使用連字元將長單詞分開放在兩行上,從而縮小單詞之間的間隔,改善文本行的外觀。不過,由於 CSS 沒有定義連字元行為,用戶代理不太可能自動加連字元。因此,在 CSS 中,兩端對齊文本看上去沒有列印出來好看,特別是元素可能太窄,以至於每行只能放下幾個單詞。當然,使用窄設計元素是可以的,不過要當心相應的缺點。
注1:CSS 中沒有說明如何處理連字元,因為不同的語言有不同的連字元規則。規范沒有嘗試去調和這樣一些很可能不完備的規則,而是乾脆不提這個問題。
⑸ 1.Android recycleView萬能分隔線 GridLayoutManager布局item左右間距均等(最易懂)
今天開始講RecycleView的系列教程。分割線,分組,局部刷新,動態添加,緩存原理,抖音效果,瀑布流。嵌套,動畫等等
RecyclerView的分割線是通過canvas和設置item偏移畫出來的.需要知道2個方法
getItemOffsets()和onDraw方法
getItemOffsets 是針對每一個 ItemView
onDraw:遍歷,進行顏色修改
我們可以看到自定義的 TestDividerItemDeoration 只實現了一個方法 getItemOffsets()。方法裡面有四個參數。
Rect outRect
View view
RecyclerView parent
RecyclerView.State state
綠色區域代表 RecyclerView 中的一個 ItemView,而外面橙色區域也就是相應的 outRect,也就是 ItemView 與其它組件的偏移區域,等同於 margin 屬性,通過復寫 getItemOffsets() 方法,然後指定 outRect 中的 top、left、right、bottom 就可以控制各個方向的間隔了。
這實現了簡單的分隔線效果,但這種方法分隔線的效果只能取決於背景色,如果我要定製分割線的顏色呢?這個時候就要 onDraw()。
————————————————
源碼分析:在recycleview中的
分割線要注意,沒有顏色,默認是白色的,會看不出來
第一種方案,通過
getItemOffsets()方法進行分割線!
判斷是否是第一個,最後一個,是單個還是雙個,是什麼類型
/***
* 分割線要注意,沒有顏色,默認是白色的,會看不出來
* @param outRect
* @param view
* @param parent
* @param state
*/
private void testItemOffset(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
int childAdapterPosition = parent.getChildAdapterPosition(view);
if (childAdapterPosition ==0) {
outRect.set(0, 20, 0, 20);
}else {
outRect.set(0, 0, 0, 20);
}
}
第二種方案:ondraw()
@Override
public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
super.onDraw(c, parent, state);
int childCount = parent.getChildCount();
for (int i =0; i < childCount; i++) {
View view = parent.getChildAt(i);
int index = parent.getChildAdapterPosition(view);
//第一個ItemView不需要繪制
if (index ==0) {
continue;
}
float dividerTop = view.getTop() -mDividerHeight;
float dividerLeft = parent.getPaddingLeft();
float dividerBottom = view.getTop();
float dividerRight = parent.getWidth() - parent.getPaddingRight();
c.drawRect(dividerLeft, dividerTop, dividerRight, dividerBottom, mPaint);
}
}
GridLayoutManager布局item左右間距均等
思路分析
首先,我們知道,對於 GridLayoutmanager ,當我們設置的 spancount 為 3 的時候,那麼每個 item 的最大寬度為 itemMaxW = recycylerW / spancount = recycylerW / 3.
假設我們 spancount 為 3,那麼在不設置 itemDercation 的情況下它的分布是這樣的,可以看到第一列與最後一行的距離是不一樣的
GridVIew出現的問題:本來固定item.高度和寬度
1.分割線有,不是理想的,左右均等
2.上下沒有分割線
源碼得到:
按上面分析的源碼,我們可以知道,調用outRect.set(int left, int top, int right, int bottom)方法時,left一直為0,right一直為divider的寬度,而每一項item的寬度都要減去(left+right)大小,
left一直為0,right一直為divider的寬度
左上右下到底是什麼的值?
計算每一個item移動的距離,左邊和右邊的移動距離
計算分析:
1.左邊的分割線寬度為sW (已知)
2.每個顯示item的寬度,布局定義的itemWidth
3. 總共分割線寬度:totalDivider=屏幕寬度-spanCount*itemWidth
4.列之間的分割線寬度為dw =(屏幕寬度-spanCount*item-2*sW )/(spantcount-1)
5.每個item需要留出的空間 ew=totalDivider/spanCount(即paddingLeft+paddingRight)
left: 左邊的間距值(絕對值,差值)
right:右邊的間距值
每個item移動的距離:
第一個Item:L0=sW R0=eW-sW
第二個Item:L1=dW-R0=dW-eW+sW R1=eW-L1=2eW-dW-sW
第三個Item:L2=dW-R1=2(dW-eW)+sW R2=eW-L2=3eW-2dW-sW
得出公式:
Ln=(position%spanCount)*(dw-ew)+sw
Rn=ew-Ln
總結:得到3個值dw,ew, sw的值
sw:左邊的距離
ew:每個的平均的分割線
dw: 列之間的分割線寬度
int firstLastSpace =50;//最左邊的分割線寬度
@SuppressLint("LongLogTag")
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
super.getItemOffsets(outRect, view, parent, state);
count++;
outRect.top =20;
mDividerHeight =0;
int itemWidth =dip2px(context, 100);
int screenWidth = getScreenWidth(context);
int dw = (screenWidth -3 * itemWidth -2 *firstLastSpace) /2;//最終計算出這個padding值
//誤區:中間的分割線的總距離,左右可能是不等的
int totalDivder = screenWidth -3 * itemWidth;
Log.d("TestDividerItemDecoration", "totalDivder" + totalDivder);
int eachDivder = totalDivder /3;
int itemPosition = ((RecyclerView.LayoutParams) view.getLayoutParams()).getViewLayoutPosition();
//不要用for循環
outRect.left = (itemPosition %3) * (dw - eachDivder) +firstLastSpace;
outRect.right = eachDivder - outRect.right;
}
錯誤的思路:
//誤區:中間的分割線的總距離,左右可能是不等的
//不要用for循環
int firstLastSpace =50;//最左邊的分割線寬度
@SuppressLint("LongLogTag")
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
super.getItemOffsets(outRect, view, parent, state);
count++;
outRect.top =20;
mDividerHeight =0;
int itemWidth =dip2px(context, 100);
int screenWidth = getScreenWidth(context);
int padding = (screenWidth -3 * itemWidth -2 *firstLastSpace) /4;//最終計算出這個padding值
//不能這么算,必須保證每個item的分割線一樣才行。
Log.d("TestDividerItemDecoration", "getItemOffsets" +count +"item寬度:" + itemWidth +"padding" + padding);
//僅僅計算左邊和右邊的距離
int childCount = parent.getChildCount();
for (int i =0; i < childCount; i++) {
if (i %3 ==0) {//最左邊的item
outRect.left =firstLastSpace;
outRect.right = padding;
}else if (i %3 ==1) {
outRect.left = padding;
outRect.right = padding;
}else if (i %3 ==2) {
outRect.left = padding;
outRect.right =firstLastSpace;
}
}
}
瀑布流的設置:
int spanIndex = layoutParams.getSpanIndex();
public class FeedDecorationextends RecyclerView.ItemDecoration {
private ;
public FeedDecoration(HomePageCardAdapter mHomePageCardAdapter) {
this.mHomePageCardAdapter = mHomePageCardAdapter;
}
@Override
public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
if (mHomePageCardAdapter ==null) {
return;
}
if (mHomePageCardAdapter.getItemViewType(parent.getChildAdapterPosition(view)) == HomePageMultipleCard.HOMEPAGE_MULTIPLE_CARD_TYPE_FITNESS_FEED) {
StaggeredGridLayoutManager.LayoutParams layoutParams = (StaggeredGridLayoutManager.LayoutParams) view.getLayoutParams();
int spanIndex = layoutParams.getSpanIndex();
if (spanIndex ==0) {
outRect.set(DensityUtil.dip2px(ShadowApp.context(), 14), 0, DensityUtil.dip2px(ShadowApp.context(), 5), DensityUtil.dip2px(ShadowApp.context(), 10));
}else {
outRect.set(DensityUtil.dip2px(ShadowApp.context(), 5), 0, DensityUtil.dip2px(ShadowApp.context(), 14), DensityUtil.dip2px(ShadowApp.context(), 10));
}
}
}
}
demo地址: https://github.com/pengcaihua123456/shennanda
⑹ 求教個 android 的 layout_wight 權重的問題。大神們救命啊
你可以在相應的activity中獲得屏幕的寬度,在根據4個linearlayout的id得到她們的實例,定義一個int 型的變數s=用屏幕的寬度除以4,然後把s重新賦值給4個linearlayout的寬度值就可以了,
private LinearLayout lay1,lay2,lay3,lay4;
lay1=(LinearLayout)findViewById(R.id.linearLayout1);
lay2=(LinearLayout)findViewById(R.id.linearLayout2);
lay3=(LinearLayout)findViewById(R.id.linearLayout3);
lay4=(LinearLayout)findViewById(R.id.linearLayout4);
//獲得屏幕的大小
DisplayMetrics ds=new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(ds);
int s=ds.widthPixels/4;
lay1.setMinimumWidth(s);
lay2.setMinimumWidth(s);
lay3.setMinimumWidth(s);
lay4.setMinimumWidth(s);
⑺ 五、ConstraintLayout(約束布局)布局介紹
參考: ConstraintLayout官方文檔
目前可以使用各種類型的約束:
1.相對定位
2.邊緣
3.定心定位
4.圓形定位
5.可見性行為
6.尺寸限制
7.鏈
8.虛擬助手對象
9.優化器
注意,約束中不能具有循環依賴關系。
相對定位是在約束布局中創建布局的基本構建塊之一。這些約束允許您將給定的小部件相對於另一個小部件定位。可以在水平和垂直軸上約束小部件:
1.水平軸:左、右、起點和終點
2.垂直軸:頂部、底部和文本基線
一般的概念是將控制項的給定邊約束到任何其他窗口小部件的另一邊。
例如,為了將按鈕B定位到按鈕A的右邊:
這告訴系統,我們希望按鈕B的左側被約束到按鈕A的右側。這樣的位置約束意味著系統將試圖使雙方共享相同的位置。
以下是可用約束的列表:
他們都引用了id對於另一個小部件,或父母(它將引用父容器,即約束布局):
如果設置了邊距,則它們將應用於相應的約束(如果存在),將邊距強制為目標和源邊之間的空間。 通常的布局邊距屬性可用於此效果:
當位置約束目標的可見性為View.GONE時,您還可以使用以下屬性指示要使用的不同邊距值:
ConstraintLayout是如何處理「不可能」的約束。例如,如果我們有這樣的事情:
除非ConstraintLayout恰好具有與Button完全相同的大小,否則兩個約束不能同時滿足(雙方都不能成為我們希望它們的位置)。
在這種情況下發生的事情是,約束的作用就像是相反的力量將小部件拉平; 這樣小部件最終將在父容器中居中。 這同樣適用於垂直約束。
遇到這種相反的約束時的默認設置是使窗口小部件居中; 但是您可以使用偏差屬性調整定位以支持一側而不是另一側:
例如,以下將使左側具有30%的偏差而不是默認的50%,使得左側將更短,小部件更傾向於左側:
使用偏差,您可以製作更好地適應屏幕尺寸變化的用戶界面。
你可以以角度和距離約束窗口小部件中心相對於另一個窗口小部件中心。 這允許你將小部件放在圓上。 可以使用以下屬性:
像往常一樣,GONE小部件不會顯示,也不是布局本身的一部分(即如果標記為GONE,它們的實際尺寸將不會更改)。
對於布局傳遞,它們的尺寸將被視為零(基本上,它們將被解析為一個點)
如果他們對其他小部件有限制,他們仍然會受到尊重,但任何邊距都會好像等於零
這種特定的行為允許構建布局,你可以臨時標記小部件。GONE,不破壞布局,這在做簡單布局動畫時特別有用。
約束布局的最小尺寸
你可以為ConstraintLayout本身定義最大和最小大小:
當其尺寸設置為WRAP_CONTENT時,ConstraintLayout將使用這些最小和最大尺寸。
可以通過以3種不同的方式設置android:layout_width和android:layout_height屬性來指定控制項的大小:
1.使用特定值
2.使用WRAP_CONTENT,它將要求小部件計算其自身大小。
3.使用0dp,相當於「MATCH_CONSTRAINT」
前兩個以與其他布局類似的方式工作。 最後一個將以匹配所設置的約束的方式調整窗口小部件的大小((a)是wrap_content,(b)是0dp)。 如果設置了邊距,則在計算中將考慮它們((c)中的0dp)。
如果維度設置為WRAP_CONTENT,則在1.1之前的版本中,它們將被視為文字維度 - 這意味著約束不會限制生成的維度。 雖然通常這足夠(並且更快),但在某些情況下,您可能希望使用WRAP_CONTENT,但仍然強制執行約束以限制結果維度。 在這種情況下,您可以添加一個相應的屬性:
當維度設置為MATCH_CONSTRAINT時,默認行為是使結果大小佔用所有可用空間。 還有幾個額外的修飾符:
layout_constraintWidth_min和layout_constraintHeight_min:將設置此維度的最小大小
layout_constraintWidth_max和layout_constraintHeight_max:將設置此維度的最大大小
layout_constraintWidth_percent和layout_constraintHeight_percent:將此維度的大小設置為父級的百分比
為min和max指示的值可以是Dp中的維度,也可以是「wrap」,它將使用與WRAP_CONTENT相同的值。
要使用百分比,您需要設置以下內容:
1.尺寸應設置為MATCH_CONSTRAINT(0dp)
2.默認值應設置為app app:layout_constraintWidth_default =「percent」或app:layout_constraintHeight_default =「percent」
3.然後將layout_constraintWidth_percent或layout_constraintHeight_percent屬性設置為0到1之間的值
您還可以將窗口小部件的一個維度定義為另一個維度的比率。 為此,您需要將至少一個約束維度設置為0dp(即MATCH_CONSTRAINT),並將屬性layout_constraintDimensionRatio設置為給定比率。 例如:
將按鈕的高度設置為與其寬度相同。
該比率可表示為:
浮點值,表示寬度和高度之間的比率
「寬度:高度」形式的比率
如果兩個尺寸都設置為MATCH_CONSTRAINT(0dp),您也可以使用比率。 在這種情況下,系統設置滿足所有約束的最大尺寸並保持指定的縱橫比。 要根據另一個的尺寸約束一個特定邊,可以預先附加W,「或H,分別約束寬度或高度。例如,如果一個維度受兩個目標約束(例如,寬度為0dp並且以父對象為中心) 你可以通過在比率前添加字母W(用於約束寬度)或H(用於約束高度)來指示哪一邊應該被約束,用逗號分隔:
將按照16:9的比例設置按鈕的高度,而按鈕的寬度將匹配父項的約束
鏈在單軸(水平或垂直)上提供類似組的行為。另一個軸可以獨立地約束。
一組小部件被認為是一個鏈,如果它們通過雙向連接被連接在一起(參見圖,顯示最小鏈,帶有兩個小部件)。
鏈由鏈的第一個元素(鏈的「頭」)所設定的屬性控制:
頭部是水平鏈最左邊的小部件,也是垂直鏈最頂端的小部件。
如果在連接上指定了邊距,則會考慮它們。 在擴散鏈的情況下,將從分配的空間中扣除邊距。
在鏈的第一個元素上設置屬性layout_constraintHorizontal_chainStyle或layout_constraintVertical_chainStyle時,鏈的行為將根據指定的樣式更改(默認為CHAIN_SPREAD)。
1.CHAIN_SPREAD - 元素將展開(默認樣式)
加權鏈 - 在CHAIN_SPREAD模式下,如果某些小部件設置為2.MATCH_CONSTRAINT,它們將拆分可用空間
3.CHAIN_SPREAD_INSIDE - 類似,但鏈的端點不會分散
4.CHAIN_PACKED - 鏈的元素將被打包在一起。 然後,子項的水平或垂直偏差屬性將影響打包元素的定位
鏈的默認行為是在可用空間中平均分布元素。如果一個或多個元素使用MATCH_CONSTRAINT,它們將使用可用的空白空間(在它們之間平均分配)。 layout_constraintHorizontal_weight和layout_constraintVertical_weight屬性將控制如何使用MATCH_CONSTRAINT在元素之間分配空間。例如,在使用MATCH_CONSTRAINT的包含兩個元素的鏈上,第一個元素使用權重2,第二個元素使用權重1,第一個元素佔用的空間將是第二個元素佔用的空間的兩倍。
在鏈中的元素上使用邊距時,邊距是相加的。
例如,在水平鏈上,如果一個元素定義了10dp的右邊距,而下一個元素定義了5dp的左邊距,則這兩個元素之間產生的邊距為15dp。
在計算鏈用於定位項目的剩餘空間時,會同時考慮項目及其邊距。剩餘空間不包含邊距。
除了前面詳述的內在功能之外,您還可以使用ConstraintLayout中的特殊幫助程序對象來幫助您進行布局。 目前,Guideline對象允許您創建相對於ConstraintLayout容器定位的水平和垂直指南。 然後可以通過將小部件限制為這樣的指導來定位小部件。
在1.1中我們公開了約束優化器。 您可以通過將標記app:layout_optimizationLevel添加到ConstraintLayout元素來決定應用哪些優化。
none:不應用任何優化
standard :默認。 僅優化直接和屏障約束
direct:優化直接約束
barrier:優化障礙限制
chain:優化鏈約束(實驗)
dimensions:優化維度度量(實驗),減少匹配約束元素的度量數量
⑻ android中Application是什麼意思,有什麼作用
Application和Actovotu,Service一樣是android框架的一個系統組件,當android程序啟動時系統會創建一個 application對象,用來存儲系統的一些信息。
⑼ android linearlayout怎樣讓四個控制項均勻分布
控制項是橫向排布的話,可以把四個控制項的width設為0dp,weight設為1。
控制項是縱向排布的話,可以把四個控制項的height設為0dp,weight設為1。
⑽ 手機怎麼製作流星代碼
背景顏色徑向漸變
css3漸變 gradients
linear gradients 線性漸變:向上下左右,對角方向
radial gradients 徑向漸變:由它的中心定義
瀏覽器支持:-webkit-(谷歌、safari) -moz-(火狐) -o-(歐朋) 註:標准語法必須放在最後!!!!!!!!!!
background: linear-gradient(direction, color-stop1, color-stop2, ...);
//direction: top、left、right、bottom、
對角線:left top、bottom right、……
background: linear-gradient(angle, color-stop1, color-stop2);//使用角度
//angle :-180deg——0deg——180deg
多個顏色節點:
background: -webkit-linear-gradient(red, green, blue); /* Safari 5.1 - 6.0 */ //默認平均分布
background: -webkit-linear-gradient(red 10%, green 85%, blue 90%); //不均勻分布
使用透明度:
background: -webkit-linear-gradient(left, rgba(255,0,0,0), rgba(255,0,0,1)); /* Safari 5.1 - 6.0 */
重復的線性漸變:
background: -webkit-repeating-linear-gradient(red, yellow 10%, green 20%);
css3 徑向漸變
background: radial-gradient(center, shape size, start-color, ..., last-color);
//shape 參數定義了形狀。它可以是值 circle 或 ellipse。其中,circle 表示圓形,ellipse 表示橢圓形。默認值是 ellipse。
//size 參數定義了漸變的大小。它可以是以下四個值:
closest-side
farthest-side
closest-corner
farthest-corner //默認
重復徑向漸變
background:-webkit-repeating-radial-gradient(red, yellow10%, green15%);
https://blog.csdn.net/ZNYSYS520/article/details/76053961
css3新單位vw、vh、vmin、vmax的使用詳解
1vw vh vmin vmax的含義
都是相對於視窗大小來決定的,單位類似%
視窗viewport是你的瀏覽器實際顯示內容的區域,換句話說是你的不包括工具欄和按鈕的網頁瀏覽器。
vw:視窗寬度的百分比(1vw代表視窗寬度的1%)
vh:視窗高度的百分比
vmin:當前vw和vh中較小的一個
vmax:當前vw和vh中較大的一個
2vw、vh與%百分比的區別
1、%是相對於父級元素的大小設定的比率,vw,vh是視窗大小決定的。
2、vw、vh優勢在於能夠直接獲取高度,而使用%在沒有設置body的高度的情況下,是無法正確獲得可視區域的高度的,所以這是超級棒的。
3,vmin、vmax 用處
做移動頁面開發時,如果使用 vw、wh 設置字體大小(比如 5vw),在豎屏和橫屏狀態下顯示的字體大小是不一樣的。
由於 vmin 和 vmax 是當前較小的 vw 和 vh 和當前較大的 vw 和 vh。這里就可以用到 vmin 和 vmax。使得文字大小在橫豎屏下保持一致。
4,瀏覽器兼容性
(1)桌面 PC
Chrome:自 26 版起就完美支持(2013年2月)
Firefox:自 19 版起就完美支持(2013年1月)
Safari:自 6.1 版起就完美支持(2013年10月)
Opera:自 15 版起就完美支持(2013年7月)
IE:自 IE10 起(包括 Edge)到現在還只是部分支持(不支持 vmax,同時 vm 代替 vmin)
(2)移動設備
Android:自 4.4 版起就完美支持(2013年12月)
iOS:自 iOS8 版起就完美支持(2014年9月)
justify-content
http://www.runoob.com/cssref/css3-pr-justify-content.html
justify-content用於設置或檢索彈性盒子元素在主軸(橫軸)方向上的對齊方式。
提示:使用align-content屬性對齊交叉軸上的各項(垂直)。
justify-content:flex-start | flex-end | center |space-between | space-around | inital | inherit;
屬性值:
flex-start:默認值。項目位於容器的開頭。
flex-end:項目位於容器的結尾。
center:項目位於容器的中心。
space-between:項目位於各行之間留有空白的容器內。
space-around:項目位於各行之前、之間、之後都留有空白的容器內。
initial:設置該屬性為它的默認值。
inherit:從父元素繼承該屬性。
align-items:
http://www.runoob.com/cssref/css3-pr-align-items.html
align-items:屬性定義flex子項在flex容器的當前行的側軸(縱軸)方向上的對齊方式。
align-items:stretch | center | flex-start | flex-end | baseline | initial | inherit;
stretch : 默認值。元素被拉伸以適應容器。子元素會被拉伸到父元素的高度。
center:元素位於容器的中心。
flex-start:元素位於容器的開頭。
flex-end:元素位於容器的結尾。
baseline:元素位於容器的基線上。
如彈性盒子元素的行內軸與側軸為同一條,則該值與"flex-start"等效。其它情況下,該值將與基線對齊。
css基線和行高:https://blog.csdn.net/it_queen/article/details/54729949
https://www.cnblogs.com/couxiaozi1983/p/3905073.html
CSS align-content 屬性
align-content屬性在彈性容器內的各項沒有佔用交叉軸上所有可用的空間時對齊容器內的各項。
align-content:stretch | center | flex-start | flex-end | space-between | space-around | initial | inherit;
stretch: 默認值。元素被拉伸以適應容器。
各行將會伸展以佔用剩餘的空間。如果剩餘的空間是負數,該值等效於「flex-start」。在其它情況下,剩餘空間被所有行平分,以擴大它們的側軸尺寸。
center:元素位於容器的中心。
flex-start: 元素位於容器的開頭。
flex-end:元素位於容器的結尾。
space-between:元素位於各行之間留有空白的容器內。
space-around:元素位於各行之前、之間、之後都留有空白的容器內。
initial:設置該屬性為它的默認值。
inherit:從父元素繼承該屬性。
css align-self屬性
align-self屬性定義flex子項單獨在側軸(縱軸)方向上的對齊方式。
注意:align-self屬性可重寫靈活容器的align-items屬性。
align-self:auto | stretch | center | flex-start | flex-end | baseline | initial | inherit;
auto: 默認值。元素繼承了它的父容器的align-items屬性。如果沒有父容器則為「stretch」
stretch:元素被拉伸以適應容器。
center:元素位於容器的中心。
flex-start:元素位於容器的開頭。
flex-end:元素位於容器的結尾。
baseline:元素位於容器的基線上。
initial:設置該屬性為它的默認值。
inherit:從父元素繼承該屬性。
css animation 動畫屬性
使用簡寫屬性把animation綁定到一個
元素。
div{
animation:mymove 5s infinite;
-webkit-animation:mymove 5s infinite;
}
animation: name ration timing-function delay iteration-count direction fill-mode play-state;
animation-name:指定要綁定到選擇器的關鍵幀的名稱。
animation-ration:動畫指定需要多少秒或毫秒完成。
animation-timing-function:設置動畫將如何完成一個周期。
linear:動畫從頭到尾的速度是相同的。
ease:默認。動畫以低速開始,然後加快,在結束前變慢。
ease-in:動畫以低速開始。
ease-out:動畫以低速結束。
ease-in-out:動畫以低速開始和結束。
cubic-bezier(n,n,n,n):在cublic-bezier函數中自己的值。可能的值是從0到1的數值。貝茲曲線 https://www.cnblogs.com/fydxx/p/6118734.html
animation-delay:設置動畫在啟動前的延遲間隔。 負值:-2s請注意動畫將跳過2秒進入動畫周期。
animation-iteration-count :定義動畫的播放次數。
n: 一個數字,定義應該播放多少次動畫。
infinite:指定動畫應該播放無限次(永遠);
animation-direction:指定是否應該輪流反向播放動畫。
normal:默認值。動畫按正常播放。
reverse:動畫反向播放。
alternate:動畫在奇數次(1、3、5……)正向播放,在偶數次(2、4、6、……)反向播放。
alternate-reverse:動畫在奇數次(1、3、5……)反向播放,在偶數次(2、4、6……)正向播放。
initial:設置該屬性為它的默認值。
inherit:從父元素繼承該屬性。
animation-fill-mode:規定當動畫不播放時(當動畫完成時,或當動畫有一個延遲未開始播放時),要應用到元素的樣式。
none:默認值。動畫在動畫執行之前和之後不會應用任何樣式到目標元素。
forwards:在動畫結束後(由animation-iteration-count決定),動畫將應用該屬性值。//動畫結束後,將保持最終結束的樣式。
backwards:動畫將應用在animation-delay定義期間啟動動畫的第一次迭代的關鍵幀中定義的屬性值。這些都是from關鍵幀中的值(當animation-direction為「normal」或「alternate」時)或to關鍵幀中的值
(當 animation-direction為「reverse」或「alternate-reverse」時)。
both:動畫遵循forwards和background的規則。也就是說,動畫會在兩個地方上擴展動畫屬性。
initial:設置該屬性為它的默認值。
inherit:從父元素繼承該屬性。
animation-play-state:指定動畫是否正在運行或已暫停。
animation-play-state: paused | running;
paused:指定暫停動畫。
running:指定正在運行的動畫。
initial:設置屬性為其默認值。
inherit:從父元素繼承屬性。
css3 transform屬性
http://www.runoob.com/cssref/css3-pr-transform.html
transform屬性應用於元素的2D或3D轉換。這個屬性允許你將元素旋轉、縮放、移動、傾斜等。
transform:none | transform-functions;
none:定義不進行轉換。
matrix(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n) 定義3D轉換,使用16個值的4*4矩陣。
translate(x,y) 定義2D轉換。
translate3d(x,y,z) 定義3D轉換。
translateX(x):定義轉換,只是用X軸的值。
translateY(y):定義轉換,只是用Y軸的值。
translateZ(z):定義3D轉換,只是用Z軸的值。
scale(x【,y】?)定義2D縮放轉換。
scale3d(x,y,z)定義3d縮放轉換。
scaleX(x)通過設置X軸的值來定義縮放轉換
………………………………還有很多
css calc()函數
calc()函數用於動態計算長度值。
需要注意的是,運算符前後都需要保留一個空格,例如:width:calc(100% - 10px);
任何長度值都可以使用calc()函數進行計算。
calc()背景顏色徑向漸變
css3漸變 gradients
linear gradients 線性漸變:向上下左右,對角方向
radial gradients 徑向漸變:由它的中心定義
瀏覽器支持:-webkit-(谷歌、safari) -moz-(火狐) -o-(歐朋) 註:標准語法必須放在最後!!!!!!!!!!
background: linear-gradient(direction, color-stop1, color-stop2, ...);
//direction: top、left、right、bottom、
對角線:left top、bottom right、……
background: linear-gradient(angle, color-stop1, color-stop2);//使用角度
//angle :-180deg——0deg——180deg
多個顏色節點:
background: -webkit-linear-gradient(red, green, blue); /* Safari 5.1 - 6.0 */ //默認平均分布
background: -webkit-linear-gradient(red 10%, green 85%, blue 90%); //不均勻分布
使用透明度:
background: -webkit-linear-gradient(left, rgba(255,0,0,0), rgba(255,0,0,1)); /* Safari 5.1 - 6.0 */
重復的線性漸變:
background: -webkit-repeating-linear-gradient(red, yellow 10%, green 20%);
css3 徑向漸變
background: radial-gradient(center, shape size, start-color, ..., last-color);
//shape 參數定義了形狀。它可以是值 circle 或 ellipse。其中,circle 表示圓形,ellipse 表示橢圓形。默認值是 ellipse。
//size 參數定義了漸變的大小。它可以是以下四個值:
closest-side
farthest-side
closest-corner
farthest-corner //默認
重復徑向漸變
background:-webkit-repeating-radial-gradient(red, yellow10%, green15%);
https://blog.csdn.net/ZNYSYS520/article/details/76053961
css3新單位vw、vh、vmin、vmax的使用詳解
1vw vh vmin vmax的含義
都是相對於視窗大小來決定的,單位類似%
視窗viewport是你的瀏覽器實際顯示內容的區域,換句話說是你的不包括工具欄和按鈕的網頁瀏覽器。
vw:視窗寬度的百分比(1vw代表視窗寬度的1%)
vh:視窗高度的百分比
vmin:當前vw和vh中較小的一個
vmax:當前vw和vh中較大的一個
2vw、vh與%百分比的區別
1、%是相對於父級元素的大小設定的比率,vw,vh是視窗大小決定的。
2、vw、vh優勢在於能夠直接獲取高度,而使用%在沒有設置body的高度的情況下,是無法正確獲得可視區域的高度的,所以這是超級棒的。
3,vmin、vmax 用處
做移動頁面開發時,如果使用 vw、wh 設置字體大小(比如 5vw),在豎屏和橫屏狀態下顯示的字體大小是不一樣的。
由於 vmin 和 vmax 是當前較小的 vw 和 vh 和當前較大的 vw 和 vh。這里就可以用到 vmin 和 vmax。使得文字大小在橫豎屏下保持一致。
4,瀏覽器兼容性
(1)桌面 PC
Chrome:自 26 版起就完美支持(2013年2月)
Firefox:自 19 版起就完美支持(2013年1月)
Safari:自 6.1 版起就完美支持(2013年10月)
Opera:自 15 版起就完美支持(2013年7月)
IE:自 IE10 起(包括 Edge)到現在還只是部分支持(不支持 vmax,同時 vm 代替 vmin)
(2)移動設備
Android:自 4.4 版起就完美支持(2013年12月)
iOS:自 iOS8 版起就完美支持(2014年9月)
justify-content
http://www.runoob.com/cssref/css3-pr-justify-content.html
justify-content用於設置或檢索彈性盒子元素在主軸(橫軸)方向上的對齊方式。
提示:使用align-content屬性對齊交叉軸上的各項(垂直)。
justify-content:flex-start | flex-end | center |space-between | space-around | inital | inherit;
屬性值:
flex-start:默認值。項目位於容器的開頭。
flex-end:項目位於容器的結尾。
center:項目位於容器的中心。
space-between:項目位於各行之間留有空白的容器內。
space-around:項目位於各行之前、之間、之後都留有空白的容器內。
initial:設置該屬性為它的默認值。
inherit:從父元素繼承該屬性。
align-items:
http://www.runoob.com/cssref/css3-pr-align-items.html
align-items:屬性定義flex子項在flex容器的當前行的側軸(縱軸)方向上的對齊方式。
align-items:stretch | center | flex-start | flex-end | baseline | initial | inherit;
stretch : 默認值。元素被拉伸以適應容器。子元素會被拉伸到父元素的高度。
center:元素位於容器的中心。
flex-start:元素位於容器的開頭。
flex-end:元素位於容器的結尾。
baseline:元素位於容器的基線上。
如彈性盒子元素的行內軸與側軸為同一條,則該值與"flex-start"等效。其它情況下,該值將與基線對齊。
css基線和行高:https://blog.csdn.net/it_queen/article/details/54729949
https://www.cnblogs.com/couxiaozi1983/p/3905073.html
CSS align-content 屬性
align-content屬性在彈性容器內的各項沒有佔用交叉軸上所有可用的空間時對齊容器內的各項。
align-content:stretch | center | flex-start | flex-end | space-between | space-around | initial | inherit;
stretch: 默認值。元素被拉伸以適應容器。
各行將會伸展以佔用剩餘的空間。如果剩餘的空間是負數,該值等效於「flex-start」。在其它情況下,剩餘空間被所有行平分,以擴大它們的側軸尺寸。
center:元素位於容器的中心。
flex-start: 元素位於容器的開頭。
flex-end:元素位於容器的結尾。
space-between:元素位於各行之間留有空白的容器內。
space-around:元素位於各行之前、之間、之後都留有空白的容器內。
initial:設置該屬性為它的默認值。
inherit:從父元素繼承該屬性。
css align-self屬性
align-self屬性定義flex子項單獨在側軸(縱軸)方向上的對齊方式。
注意:align-self屬性可重寫靈活容器的align-items屬性。
align-self:auto | stretch | center | flex-start | flex-end | baseline | initial | inherit;
auto: 默認值。元素繼承了它的父容器的align-items屬性。如果沒有父容器則為「stretch」
stretch:元素被拉伸以適應容器。
center:元素位於容器的中心。
flex-start:元素位於容器的開頭。
flex-end:元素位於容器的結尾。
baseline:元素位於容器的基線上。
initial:設置該屬性為它的默認值。
inherit:從父元素繼承該屬性。
css animation 動畫屬性
使用簡寫屬性把animation綁定到一個
元素。
div{
animation:mymove 5s infinite;
-webkit-animation:mymove 5s infinite;
}
animation: name ration timing-function delay iteration-count direction fill-mode play-state;
animation-name:指定要綁定到選擇器的關鍵幀的名稱。
animation-ration:動畫指定需要多少秒或毫秒完成。
animation-timing-function:設置動畫將如何完成一個周期。
linear:動畫從頭到尾的速度是相同的。
ease:默認。動畫以低速開始,然後加快,在結束前變慢。
ease-in:動畫以低速開始。
ease-out:動畫以低速結束。
ease-in-out:動畫以低速開始和結束。
cubic-bezier(n,n,n,n):在cublic-bezier函數中自己的值。可能的值是從0到1的數值。貝茲曲線 https://www.cnblogs.com/fydxx/p/6118734.html
animation-delay:設置動畫在啟動前的延遲間隔。 負值:-2s請注意動畫將跳過2秒進入動畫周期。
animation-iteration-count :定義動畫的播放次數。
n: 一個數字,定義應該播放多少次動畫。
infinite:指定動畫應該播放無限次(永遠);
animation-direction:指定是否應該輪流反向播放動畫。
normal:默認值。動畫按正常播放。
reverse:動畫反向播放。
alternate:動畫在奇數次(1、3、5……)正向播放,在偶數次(2、4、6、……)反向播放。
alternate-reverse:動畫在奇數次(1、3、5……)反向播放,在偶數次(2、4、6……)正向播放。
initial:設置該屬性為它的默認值。
inherit:從父元素繼承該屬性。
animation-fill-mode:規定當動畫不播放時(當動畫完成時,或當動畫有一個延遲未開始播放時),要應用到元素的樣式。
none:默認值。動畫在動畫執行之前和之後不會應用任何樣式到目標元素。
forwards:在動畫結束後(由animation-iteration-count決定),動畫將應用該屬性值。//動畫結束後,將保持最終結束的樣式。
backwards:動畫將應用在animation-delay定義期間啟動動畫的第一次迭代的關鍵幀中定義的屬性值。這些都是from關鍵幀中的值(當animation-direction為「normal」或「alternate」時)或to關鍵幀中的值
(當 animation-direction為「reverse」或「alternate-reverse」時)。
both:動畫遵循forwards和background的規則。也就是說,動畫會在兩個地方上擴展動畫屬性。
initial:設置該屬性為它的默認值。
inherit:從父元素繼承該屬性。
animation-play-state:指定動畫是否正在運行或已暫停。
animation-play-state: paused | running;
paused:指定暫停動畫。
running:指定正在運行的動畫。
initial:設置屬性為其默認值。
inherit:從父元素繼承屬性。
css3 transform屬性
http://www.runoob.com/cssref/css3-pr-transform.html
transform屬性應用於元素的2D或3D轉換。這個屬性允許你將元素旋轉、縮放、移動、傾斜等。
transform:none | transform-functions;
none:定義不進行轉換。
matrix(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n) 定義3D轉換,使用16個值的4*4矩陣。
translate(x,y) 定義2D轉換。
translate3d(x,y,z) 定義3D轉換。
translateX(x):定義轉換,只是用X軸的值。
translateY(y):定義轉換,只是用Y軸的值。
translateZ(z):定義3D轉換,只是用Z軸的值。
scale(x【,y】?)定義2D縮放轉換。
scale3d(x,y,z)定義3d縮放轉換。
scaleX(x)通過設置X軸的值來定義縮放轉換
………………………………還有很多
css calc()函數
calc()函數用於動態計算長度值。
需要注意的是,運算符前後都需要保留一個空格,例如:width:calc(100% - 10px);
任何長度值都可以使用calc()函數進行計算。
calc()函數支持+、-、*、/運算。
calc()函數使用標準的數字運算優先順序規則。
calc(expression)expression必須,一個數字表達式,結果將採用運算後的返回值。函數支持+、-、*、/運算。
calc()函數使用標準的數字運算優先順序規則。
calc(expression)expression必須,一個數字表達式,結果將採用運算後的返回值。