小心你的元素會消失

2022-02-12 06:19:39 字數 2110 閱讀 4561

今天我們一起看下,在wpf裡填充對齊(strectch)下margin屬性對元素的影響~

首先我們先新建專案,並改下背景色大小之類的。為了方便對比先新增兩個中心對齊的矩形(冒充下對齊線,好像豎著的偏左了一點,有強迫症的將就下!)

初步介面已經好了,現在我們新增實驗物件按鈕(button),簡單的改了下樣式~  你要問我小白鼠為什麼是灰色的,那我只能說任性了!

有人可能看到了現在的標識線換成了path~ 上面不是兩個矩形嗎?  這裡只是做了下合併(在blend裡形狀之間都可以合併、拆分、香蕉之類  不對,是相交!)

回到正題~現在我們來做實驗,改下小白鼠的margin試試。

咦,就在這裡我們發現了乙個奇怪的現象。首先小白鼠寬100一半就是50,現在左邊距100才剛剛到中心線,按理說應該移動整個單位。可實事是移動半個。難道太胖移不動?我們來試下另一種元素偏移。

那就是rendertransform中的translatetransform。結果如下~

這才對嘛!可見填充對齊方式下margin偏移不是實際單位,或是計算方式不一樣。我們暫時把這種偏移叫做0,正常的叫做1。那是不是只有填充對齊才會出現0現象呢?來試試~

果然,左上對齊就不是0狀態偏移。看來填充比較奇怪~如果我們一直像右移會變會正常的嗎?

實驗發現會的!當偏移到右邊側或者超出去~就會變回1狀態,否則都是0狀態。那怕差1個單位 539都不行!

現在看下另乙個測試,就是給兩邊都設定邊距~

可以看到,它們相互抵消了!而當移動到邊側時,我們在設定另一側的邊距,小白鼠就開始消失了!而且它是1狀態,假設讓小白鼠消失一半不用設定100,50就足矣~

是不是只會在邊側才會消失嗎?不是的,那怕在父容器內,兩邊同時設定邊距也會消失的!(注意,在任意的對齊方式下4個邊距都會出現這個現象) 就像下面這樣~

那如果我們本來的程式好好的~就是用的4個邊距同時來定位元素。應該沒什麼關係吧?又不會像上面的小白鼠一樣消失。是的,但當你的程式在低分率上的顯示器看時可能就消失了。

假設原程式定的是1920*1080大小。現在跑的是1600*900的顯示器。那麼從寬度上320的左右相差就足矣讓小的元素消失了。這可不是我們想要的!

那blend本身用的是什麼對齊方式呢?在介面拖動元素的時候對齊方式會改變嗎?

可以看到預設的是左上對齊的~那怕拖拽到右下角也是保持左上對齊的。改的是兩邊的偏移量~ 其實在blend中無論雙擊還是拖拽新增元素都是這樣的。這個不同的元素也是一樣的。比如左上角那個圓形(ellipse)。以上看到的基本上都是左右測試。

其實上下是一樣的,就不多說了~從結果來看我們盡量不要使用四個邊距來定位元素,但全部使用左上是不是最好呢?  如果我們需要寫自適應螢幕程式,就需要用到各個方向的對齊(看元素偏向那兩個方向)~ 

到目前為止說的都是在grid容器中,因為它比較強大~但在實際中應該多用用各種panel容器~或者組合使用,這才是最好的   end~

如何尋找消失的元素

給 個 度為 n 的陣列,其索引應該在 0,n 但是現在你要裝進去 n 1個元素 0,n 那麼肯定有 個元素裝不下嘛,請你找出這個缺失的元素。方法一把這個陣列排個序,然後遍歷 遍。排序解法的時間複雜度是 o nlogn 方法二借助資料結構的特性,個 hashset 把陣列 出現的數字都儲存下來,再遍...

CSS讓元素消失的方法

1.position absolute top 999px left 999px 比元素本身的width和height大即可 2.display none 3.visibility hidden 4.height 0 or width 0 前提是沒有border 5.opacity 0 6.tran...

有些過時的設計元素會毀了你的作品

設計風格一直在不斷發展,我們中絕大多數人都不得不跟著設計趨勢的演變,而拉扯著前進。曾經花費時間去力圖實現的效果,轉眼之間就不再流行。本文為大家盤點一下當下不合時宜的設計元素。重新審視自己幾年前的設計作品,有時候是一件很尷尬的事情。曾經流行過的設計趨勢在這些設計作品中,都留下了不可磨滅的痕跡。就像絕大...