這篇談的方法在舊的瀏覽器大概會出包, 沒有實際研究。跨瀏覽器的議題太複雜, 希望在我不得不面對這議題前, 跨瀏覽器的痛苦可以減少很多 (大概要等 Windows XP 絕跡吧)。
以下圖為例, 這篇討論兩個使用 CSS position 的小技巧。
使用 relative position 重疊版型
上圖的書本和內文, 實際上是兩個 div 組成的, 還原後如下圖:
組合的方式如下:
HTML
<div class="wrapper"> <div class="content"></div> <div class="book"></div> </div>CSS
.wrapper {
height: 750px;
overflow: hidden;
}
.content {
height: 500px;
position: relaltive;
z-index: 1;
}
.book {
height: 700px;
width: 500px;
position: relative;
top: -600px;
}
數據是我大概填的, 示意用。
幾個要點:
- .book 用 position: relative 從原有的位置往上移到 .content 做為背景。
- 為了讓 .content 在上方顯示, 設 z-index: 1。由於 z-index 只有在 non-static position 下才有效, 所以改一下 position。
- .book 使用 position: relative 往上移後, 仍會在原位置留下空間, 就像 visibility: hidden 一樣。為了避免占用原位置的空間, 限製 .wrapper 的 height。
缺點是必須限制高度, 不像一般網頁彈性地隨內文增加而自動增加高度。
使用 absolute position 疊出下方的書緣
下方展開後, 中間長這個樣子, 我隱藏了左側一個 div, 方便看拆開的 div。
HTML
<div class="page-container-bottom">
<div class="page-bottom page-bottom-left">
<div class="page-bottom-inner page-bottom-left-inner"></div>
</div>
<div class="page-bottom page-bottom-right">
<div class="page-bottom-inner page-bottom-right-inner"></div>
</div>
</div>
CSS
.page-bottom {
height: 30px;
position: absolute;
bottom: 0;
background-color: #8F8F8F;
}
.page-bottom-left {
border-top-right-radius: 90px 30px;
width: 50%;
}
.page-bottom-inner {
height: 15px;
width: 100%;
bottom: 0px;
position: absolute;
background-color: #FFF;
}
.page-bottom-left-inner {
border-top-right-radius: 90px 15px;
}
CSS 部份只列出左半邊, 右半邊作法一樣, 只是改用 border-top-left-radius。
幾個要點:
- 左右各一個 div, 外層的 div ( .page-bottom ) 用 position: absolute + bottom: 0 做到貼齊下緣的效果。注意使用 position: absolute 的 tag 會跟著上層第一個使用 non-static position 的 tag, 在這個例子裡, 是前面提過的 div.book。
- 內層的 div ( .page-bottom-inner ) 用一樣的方式貼齊底部, 但是 height 比較矮, 且圓角弧度比較小。兩者疊出書緣的效果。
用 position: absolute 貼齊底步, 做起來出呼意料地容易。



沒有留言:
張貼留言