有沒有辦法將背景圖像從其元素右側的一定數量的像素定位?使用CSS從右側偏移背景圖像
例如,定位的東西從一定數量的像素的(比如,10)離開,這是我怎麼會做它:
#myElement {
background-position: 10px 0;
}
有沒有辦法將背景圖像從其元素右側的一定數量的像素定位?使用CSS從右側偏移背景圖像
例如,定位的東西從一定數量的像素的(比如,10)離開,這是我怎麼會做它:
#myElement {
background-position: 10px 0;
}
我發現這個CSS3功能有幫助:
/* to position the element 10px from the right */
background-position: right 10px top;
據我知道這是不是在IE8的支持。在最新的Chrome/Firefox中,它工作正常。
有關支持的瀏覽器的詳細信息,請參閱Can I use。
二手來源:http://tanalin.com/en/blog/2011/09/css3-background-position/
這是很好,但不幸的是它不適用於Safari 5.1.7(這是非常重要的,如果通過手機查看) – MosheElisha 2013-05-23 08:08:17
它也不適用於Android默認瀏覽器 – 2013-12-01 19:02:38
它現在適用於移動設備(在Android上檢查, iOS和WindowsPhone)。 Still Safari 5.1.7不支持這裏給出的背景位置。 – Szorstki 2014-04-15 13:33:39
!過時的答案,因爲CSS3 brought this feature
有沒有辦法從其元素的正確位置背景圖像的一定數量的像素?
沒有。
熱門的解決方法包括
margin-right
加入透明像素到圖像本身和它定位top right
更全面的擴展CSS3'background-position'的支持即將到來:http://stackoverflow.com/questions/501375/place-background-image-1em-from-the-right/14206774#14206774 – 2013-01-08 01:13:37
好的如果我明白你的要求,你會這樣做;
您的DIV容器名爲#main-container
和.my-element
。使用它來讓你開始;
#main-container {
position:relative;
}
/*To make the element absolute - floats above all else within the parent container do this.*/
.my-element {
position:absolute;
top:0;
right:10px;
}
/*To make the element apart of elements, something tangible that affects the position of other elements on the same level within the parent then do this;*/
.my-element {
float:right;
margin-right:10px;
}
順便說一句,更好的做法是使用類,如果你在頁面中引用一個較低的水平元素(我假設你是因此我的上述名稱變更
過時的答案:現在是在各大瀏覽器中實現,請參閱 其他回答這個問題。
CSS3已修改的background-position
的規範,這樣它會與不同的原點工作。不幸的是,我無法找到任何EVID因爲它已在任何主流瀏覽器中實現。
http://www.w3.org/TR/css3-background/#the-background-position 見實施例12.
background-position: right 3em bottom 10px;
謝謝塔米!不幸的是,這在Firefox 4或Chrome 11中對我無效。 – nickf 2011-05-05 09:13:44
More deets @ http://code.google.com/p/chromium/issues/detail?id=57963 – 2011-11-23 00:56:40
這是在Opera中實現的。認爲這真是太好了,然後我在其他瀏覽器中測試過,而且我是對的。 – 2012-09-10 20:36:51
,最簡單的解決方案是使用百分比。這並不是你尋求像素精度的正確答案,但是如果你只需要在右邊緣和圖像之間填充一點點的東西,那麼給出99%的位置通常效果不錯。
代碼:
/* aligns image to the vertical center and horizontal right of its container with a small amount of padding between the right edge */
div.middleleft {
background: url("/images/source.jpg") 99% center no-repeat;
}
+1「我們將在下週進行像素對齊」 - 始終有效。 – moonwave99 2012-11-14 13:10:45
該解決方案似乎在不同瀏覽器中的工作最一致。 – 2013-08-15 14:45:23
已確認可以在IE8中使用。 – 2013-09-30 19:13:40
CSS3的規範,允許背景,地位不同的起源現在支持在Firefox 14,但仍無法在Chrome 21(顯然IE9部分支持他們,但我沒有測試它自己)
除了Chrome的問題是@MattyF引用有一個更簡潔的總結在這裏: http://code.google.com/p/chromium/issues/detail?id=95085
我剛剛測試過這個功能,它現在可以在Firefox(v.18.0.2),IE(v.9.0.8)和Chrome(v.25.0.1364.97)中使用,但是不能在Safari(v.5.1.2)中使用 – 2013-02-25 04:06:09
一個簡單而骯髒的伎倆是簡單地增加偏移,您W¯¯螞蟻對你用作背景的圖像。它不可維護,但它完成了工作。
使用中心右側作爲位置,然後添加一個透明邊框來抵消它?
這還不錯,但內容也會從右側移入。這可能會或可能不會成爲破壞者。以下是它的外觀示例:http://jsbin.com/ijewoq/1/ – nickf 2013-03-19 23:52:25
認爲這只是一個平衡的嘗試和錯誤:)希望它能解決問題! – 2013-03-21 13:24:02
這將工作在最現代瀏覽器...除了IE (browser support)。即使該頁面列出> = IE9支持,我的測試不同意這一點。
您可以像這樣使用calc()css3屬性;
.class_name {
background-position: calc(100% - 10px) 50%;
}
對我來說,這是最清晰和最合乎邏輯的方式來實現右邊距。我還使用了用於IE的border-right: 10px solid transparent;
的回退。
這很好,但不幸的是它不適用於Safari 5.1.7(如果通過手機查看,這非常重要) – MosheElisha 2013-05-23 08:09:08
然後,您應該使用可在Safari中使用的背景位置,以及可由可用於瀏覽器的背景位置它。例如: 'background-position:92%8px; background-position:calc(100% - 12px)8px;' – 2015-07-02 23:23:37
不適用於所有瀏覽器。 「正確的10px中心」語法在瀏覽器中有更多的擴展支持。 – 2016-02-03 09:02:04
提議here,這是一個漂亮的跨瀏覽器的解決方案,完美的作品:
background: url('/img.png') no-repeat right center;
border-right: 10px solid transparent;
我用它,因爲在標記爲解決這個問題的回答提出的指定偏移的CSS3功能的瀏覽器不支持那麼好。例如。
那麼當我需要這個邊框具有某種顏色時呢? – machineaddict 2015-01-15 14:40:04
這是一個很好的答案,因爲您可以在保持跨瀏覽器兼容的同時保持像素精度。謝謝! (如果你想要一個具有特定顏色的邊框,可以使用某種類型的包裝來包裹輸入並將邊框添加到該元素。) – Gavin 2015-03-12 17:02:32
如果您有固定寬度的元素並知道背景圖片的寬度,您可以簡單地將背景位置設置爲:元素的寬度 - 圖片的寬度 - 您想要的右側空白處。
例如:用100像素寬的元件和300像素寬的圖像,以獲得在右邊10px的的間隙,將其設置爲100-300-10 = -210px:
#myElement {
background:url(my_image.jpg) no-repeat -210px top;
width:100px;
}
您可以在元素左側獲取圖像的最右側80個像素,右側有20px的空白。
我知道它聽起來很愚蠢,但有時它節省了時間......我使用垂直方式(底部的間隙)用於導航鏈接與圖像下面的文本。
不確定它適用於你的情況。
的most appropriate answer爲背景,地位的新的四值的語法,但直到所有browsers support it你最好的辦法是較早響應以下順序的組合:
background: url(image.png) no-repeat 97% center; /* default, Android, Sf < 6 */
background-position: -webkit-calc(100% - 10px) center; /* Sf 6 */
background-position: right 10px center; /* Cr 25+, FF 13+, IE 9+, Op 10.5+ */
我的問題是我需要的背景圖像從右邊框保持相同的距離時,窗口大小即對於平板電腦/手機等 我的解決辦法是使用一個percenatge像這樣:
background-position: 98% 6px;
,它STIC ks到位。
這可能適用於您確切知道窗口尺寸的情況,但對於大多數情況在網絡上的時間,你不能確定這一點。看看在所有情況下(在支持的瀏覽器上)都能使用的接受答案。 – nickf 2013-10-01 17:23:26
如果你勻稱的元素,你可以使用:
.valid {
background-position: 98% center;
}
.half .valid {
background-position: 96% center;
}
在這個例子中,.valid
將與圖片類和.half
將是一個行與標準之一大小的一半。
髒,但作爲一種魅力,它的合理管理。
在我的情況下(使用固定寬度佈局),這正是我所需要的。謝謝。 – Gavin 2014-08-05 10:28:16
是的!以及定位的背景圖像,彷彿0像素從瀏覽器,而不是左邊的右邊 - 我使用:
background-position: 100% 0px;
如果你想用這種添加箭頭/其它圖標的按鈕那麼你可以使用CSS僞元素?
如果它真的整個按鈕背景圖像,我傾向於納入間距爲圖像,而只使用
background-position: right 0;
但是,如果我有一個設計箭頭添加到例如按鈕我往往有這樣的html:
<a href="[url]" class="read-more">Read more</a>
而且往往做CSS如下:
.read-more{
position: relative;
padding: 6px 15px 6px 35px;//to create space on the right
font-size: 13px;
font-family: Arial;
}
.read-more:after{
content: '';
display: block;
width: 10px;
height: 15px;
background-image: url('../images/btn-white-arrow-right.png');
position: absolute;
right: 12px;
top: 10px;
}
通過使用after選擇器,我添加了一個使用CSS的元素來包含這個小圖標。您可以通過在a元素內添加一個範圍或<i>
元素來做同樣的事情。但我認爲這是向按鈕添加圖標的更簡潔的方式,並且支持跨瀏覽器。
你可以看看這裏的小提琴: http://codepen.io/anon/pen/PNzYzZ
應該是'content:''; '而不是'內容:0;'但是這對我來說是一個有用的解決方案 – Nat 2016-07-16 14:58:05
你是對的,我已經更新了;) – 2016-08-22 13:50:50
background-position: calc(100% - 8px);
你肯定不是意味着'背景位置:-10px 0;'?只是檢查:) – thirtydot 2011-02-28 13:13:56
我知道這有一些重複,但我無法找到他們中的任何一個。 – 2011-02-28 13:15:18
@thirtydot將其從左邊緣向左移動10像素。 – nickf 2011-02-28 13:23:58