MozTW 討論區
https://forum.moztw.org/

CSS定位背景圖的問題
https://forum.moztw.org/viewtopic.php?f=13&t=17549
1 頁 (共 1 頁)

發表人:  Seiken [ 2007-02-06, 10:27 ]
文章主題 :  CSS定位背景圖的問題

背景圖可以用background-position來調整位置
一般的情況下position的原點是以該CSS區塊開始算
但是如果又用了background-attachment: fixed;的話
在IE中還是一樣,而在Firefox裡就會變成以瀏覽器來定義原點
翻翻規格書也沒有提到這點,請問有沒有辦法可以調回來?
例如指定背景圖的起始點等等

發表人:  Seiken [ 2007-02-06, 10:40 ]
文章主題 : 

自己先想了一個笨方法
就是讓原來的區塊保持透明
背後再放專門用來裝背景圖的區塊
這樣就沒有需要用到fixed屬性了
不過還是想知道有沒有CSS規範內的方法

發表人:  訪客 [ 2007-02-06, 10:46 ]
文章主題 : 

看不懂你想做什麼,
不過關於 fixed, css 2.1 有寫

If a background image is specified, this property specifies whether it is fixed with regard to the viewport ('fixed') or scrolls along with the containing block ('scroll').

發表人:  Seiken [ 2007-02-06, 20:07 ]
文章主題 : 

Anonymous 寫:
看不懂你想做什麼,
不過關於 fixed, css 2.1 有寫

If a background image is specified, this property specifies whether it is fixed with regard to the viewport ('fixed') or scrolls along with the containing block ('scroll').

您提到的是attachment的基本用法
和我的問題沒有關係

要更詳細解釋這個問題的話,那就只好舉例了
<body>
<div id="sample" style="
top: 10px; left: 10px;
height: 100px; width: 100px;
background-image: url(blablabla.jpg);
background-position: -10px -10px;
">
</div>
</body>

相信各位看得出來position -10是為了看起來起點像在body
如果只有一個div那麼直接修圖比較快,但是如果有很多div
那麼還是用css定位比較方便了

以上的css可以營造出像是窗口的效果
而當視窗可能捲動時,那麼不可避免地要加入
background-attachment: fixed;
這時候問題就來了,在Firefox裡面背景的位置這時會改變
fixed後背景的position原點並不是從上例的#sample開始算
而是body,加入fixed之後上例的背景會往左和上各移動10px
等於起點是body開始算-10px, -10px的位置了

這樣有人看懂了嗎?
我希望能和IE一樣fixed過的背景仍然用區塊本身的座標起算
或是其他兩者一致、而且符合標準的CSS方式來讓定位相符
有這樣的東西嗎

有另一個解決方法是用frame或iframe
好像frame內的背景圖position就會由該frame左上角開始算
但是為了這種理由塞一堆frame好像不太適合
相較之下第二篇提到的背景專用區塊法好多了

順便一提,background的屬性我有寫成一行過
顯示出來的結果是一樣的

順便一提2,IE6.0真的可以跑出fixed的效果
雖然還是不太清楚為什麼有些網頁可以又有些不行

發表人:  Amauds [ 2007-02-06, 20:53 ]
文章主題 : 

好像看過類似的討論文章,
Firefox 對 fixed 解譯比較接近 css 定義

另可參考 http://blog.roodo.com/jaceju/archives/91923.html

發表人:  不惑仔Boohover [ 2007-02-07, 01:17 ]
文章主題 : 

Seiken 寫:
Anonymous 寫:
看不懂你想做什麼,
不過關於 fixed, css 2.1 有寫

If a background image is specified, this property specifies whether it is fixed with regard to the viewport ('fixed') or scrolls along with the containing block ('scroll').

您提到的是attachment的基本用法
和我的問題沒有關係

要更詳細解釋這個問題的話,那就只好舉例了

恕下略~


背景fixed本來就是參照「viewport」,在瀏覽器中指的就是視窗(也就是html),是
ie6錯誤執行(ie7已修正此錯誤),請先了解此點,和你的問題非常有關,並不是以所在的block為參照。

根據你的不完整的例子及不清楚的描述猜測,並解決如下:

原html大致如下
代碼:
<body>
<div id="sample">
 內容
</div>
</body>


css設計如下
代碼:
#sample{
position:absolute;
top:10px;
left:10px;
width:100px;
height:100px;
overflow:auto;
background:url(blablabla.jpg) -10px -10px no-repeat fixed;/*讓ie6能有固定在#sample的效果*/
}
html>body #sample{background-attachment:scroll;}
/*實際上預設的scroll就是固定在該區塊中了,本來就不需要定義成fixed,所以此項讓ie6以外回到正常狀態*/

發表人:  Seiken [ 2007-02-07, 10:30 ]
文章主題 : 

原來viewport是專指可視範圍
之前我沒有了解清楚,確實是IE6.0沒有正確執行
不過您的處理方式變成只有IE有fixed,其他的瀏覽器反而「回到正常狀態」了
如果把最後那行改成以viewpoint為基準的position應該就行了

又找到了這篇文章
它是用Javascript的方法來達成的

似乎沒有辦法光明正大地用CSS解決呢

發表人:  風痕影 [ 2007-02-07, 12:53 ]
文章主題 : 

Seiken 寫:
如果把最後那行改成以viewpoint為基準的position應該就行了

不行,那樣會變成看到背景圖一直停在頁面上同一個位置 @@"
而不是只停在 #sample 裡...

我剛才用 IE 6、IE 7、Opera 9.02、Firefox 2 試過樓上的解法
只有 IE 才會在 #sample 裡頭的捲軸捲動時無法固定背景圖...
其他瀏覽器的顯示結果都和設了 fixed 後的 IE 一樣 ^^

發表人:  訪客 [ 2007-02-07, 13:37 ]
文章主題 : 

你是想讓 div 內的背景不要動吧,
我偷懶, 沒去試, 但看各位的討論, firefox ie7 opera9 原本就不動, ie6 要加 fixed,
那就用 hack 的寫法混過去就好了,
當然能寫二份 ,.css 最好.

發表人:  skyfate [ 2007-02-16, 16:06 ]
文章主題 : 

Seiken 寫:
背景圖可以用background-position來調整位置
一般的情況下position的原點是以該CSS區塊開始算
但是如果又用了background-attachment: fixed;的話
在IE中還是一樣,而在Firefox裡就會變成以瀏覽器來定義原點
翻翻規格書也沒有提到這點,請問有沒有辦法可以調回來?
例如指定背景圖的起始點等等


1.
代碼:
div#test {…} /* For All */

2.
代碼:
* html div#test {…} /* For IE Only */


  2.是只有 IE 看得懂,所以可以使用這個方式來「修正」。而在 1. 中, IE 可以正確執行的話,那就不必重複寫在 2. 中。(注意 1. 與 2. 的前後順序)

發表人:  Amauds [ 2009-03-25, 13:02 ]
文章主題 : 

以往 2.0 時背景可以用 fixed 屬性固定住,
現在用 3.0 背景圖會跟著捲動,
這是 firefox 對 css 解釋有所更動嗎?

發表人:  風痕影 [ 2009-03-25, 16:17 ]
文章主題 : 

Amauds 寫:
以往 2.0 時背景可以用 fixed 屬性固定住,
現在用 3.0 背景圖會跟著捲動,
這是 firefox 對 css 解釋有所更動嗎?

有沒有範例網頁呢?因為我前幾天才試過
是可以不跟著捲動的耶 =   ="

發表人:  Amauds [ 2009-03-25, 17:30 ]
文章主題 : 

風痕影 寫:
有沒有範例網頁呢?因為我前幾天才試過
是可以不跟著捲動的耶 =   ="

http://blog.roodo.com/amauds/
IE6 背景是固定的,
不知道跟樂多改版有沒有關係?
太久沒修這邊的版型了.

發表人:  Coopoo [ 2009-03-25, 21:48 ]
文章主題 : 

Amauds 寫:
http://blog.roodo.com/amauds/
IE6 背景是固定的,
不知道跟樂多改版有沒有關係?
太久沒修這邊的版型了.

檢查一下你的 userContent.css 或是 Stylish 吧。 :)

發表人:  Amauds [ 2009-03-26, 22:33 ]
文章主題 : 

可能真的是 userContent.css 的關係,
引入太多檔案了, 待會再重啟 firefox 試試.

1 頁 (共 1 頁) 所有顯示的時間為 UTC + 8 小時
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/