1. 程式人生 > >父級overflow為scroll時,絕對定位的子元素會被隱藏或一起滾動

父級overflow為scroll時,絕對定位的子元素會被隱藏或一起滾動

需求:父級邊框固定,裡面的內容滾動
由於是圖片邊框,於是我把邊框的上下部分單獨切圖,中間重複部分平鋪

想要的效果圖:
中間的內容區域是可滾動的
一開始的寫法:
html:

<div class="paradise-wrap">
     <div class="paradise"></div>
</div>

css:

.paradise-wrap{
            position: relative;
            width: 640px;
            background: url("images/paradise/paradise-middle.png"
)
repeat-y top
; background-size: 640px 24px; padding: 0 40px; box-sizing: border-box; height: 800px; overflow: scroll; }
.paradise-wrap:before{ position: absolute; content: ''; width: 640px; height
: 40px
; background: url("images/paradise/paradise-top.png") no-repeat center; left: 0; top: -40px; }
.paradise-wrap:after{ position: absolute; content: ''; width: 640px; height: 40px; background: url("images/paradise/paradise-bottom.png"
)
no-repeat center
; left: 0; bottom: -40px; }
.paradise{ width: 532px; height: 1238px; background: url("images/paradise/paradise-pics.png") no-repeat center; background-size: 532px 1238px; margin: 0 auto; }

實際效果圖:
這裡寫圖片描述
上面的邊框一開始就被隱藏了,而滾動裡面的內容,發現下邊框會隨著內容一起滾動

原因是,paradise-wrap的div設定了position:relative,此時before、after偽元素定位參照物件為paradise-wrap,而其overflow屬性不為visible時,會對超出尺寸進行裁剪(於是作為子元素的before部分就被裁剪了),即使before、after是絕對定位,但是也是相對於父級絕對定位,所以父級一滾動,絕對定位的after部分也會隨之滾動

筆者一開始以為是after、before偽元素的原因,其實偽元素寫法跟正常的div寫法一樣,都是作為paradise-wrap的子元素,只不過偽元素不在正常的DOM樹中,把上下邊框用絕對定位的div實現也同樣會出現這種問題

解決方法:
在需要滾動的區域外層,再套一層div,將原來寫在paradise-wrap上的height、overflow: scroll屬性加在這個div上

html:

<div class="paradise-wrap">
        <div class="paradise-content">
            <div class="paradise">
            </div>
        </div>
    </div>

css:

.paradise-wrap{
            position: relative;
            width: 640px;
            background: url("images/paradise/paradise-middle.png") repeat-y top;
            background-size: 640px 24px;
            padding: 0 40px;
            box-sizing: border-box;
        }
.paradise-content{
            height: 800px;
            overflow: scroll;
        }

這樣的話,不會影響外面的邊框顯示,邊框固定,而裡面的內容也能正常滾動,可是實現一開始希望達到的效果

相關推薦

overflowscroll絕對定位的子元素隱藏一起滾動

需求:父級邊框固定,裡面的內容滾動 由於是圖片邊框,於是我把邊框的上下部分單獨切圖,中間重複部分平鋪 想要的效果圖: 一開始的寫法: html: <div class="paradise-wrap"> <div cl

WebUploader中divdisplay:none點選顯示無效。

在使用WebUploader上傳檔案時,有時候因介面操作要求,要控制其所在div的隱藏或顯示,發現隱藏後,flash模式的按鈕點選事件缺失,點選無效。 解決辦法: 1、在顯示時,先destroy 原有 uploader,再重新建立即可:程式碼如下, //第一次建立uplod

IE中絕對位子元素相對定位後面元素絕對定位覆蓋等問題。

1.IE中絕對定位子元素相對定位,被後面元素絕對定位覆蓋問題。 父元素A{ position:relative; }     |     |——A子元素{ position:absolute; }  

margin與padding值設定百分數其值的計算參照最近元素width

在前端開發過程中,設定樣式引數margin 與 padding 值為百分數時,其具體值的計算方法需參照最近父級的width計算。 1)exp1: margin-top 為百分數 其中標籤的巢狀關係為: <div class="boxparent">

容器div內的子元素divfloat元素無法撐開(高度自適應)的解決方式以及css中position和float的介紹

先簡單給出父元素無法高度自適應時的解決方案:       第一種:在父容器上設定 overflow:auto或者hidden可以讓它自動包含子元素,從而具有了實際的height值。       第二種:在子元素的最下面加上一個 空元素,並且設定clear:both,但

【Unity3D】導出SpriteModeMultiple裏面的每一張精靈圖片。

eight name 技術 directory 像素點 點擊 ref 菜單 分享 有時候,我們會需要把圖集中的每一個精靈導出來。 導出代碼:   [MenuItem("Tools/ExportSprite")] public static void Export

當對象對象屬性如何安全給對象對象屬性添加默認值

方案 string sign isp ignorecas 兩種 對象 習慣 比較 今天遇到的問題,也是寫代碼的習慣問題,邏輯沒有問題,但不規範,也不安全, 容易出現漏洞。 先將代碼貼出: String isPrintLogo = vodInfoDto.getIsPrint

當input中的type值file各瀏覽器的表現形式不同

button tex ati color 不同 ack 需要 標簽 圖片 如果想使各瀏覽器下的表現形式相同,需要對該input元素隱藏,然後再改元素下方添加標簽。其html寫法如下 <div class="input-file"> <input type

IIS部署ASP.NET網站後提示只有在配置文件 Page 指令中將 enableSessionState 設置 true 才能使用會話狀態...

text 效果 handlers 用戶空間 ren 分享 tpc out 調試 今天,在IIS上部署網站後,出現了下面錯誤: 只有在配置文件或 Page 指令中將 enableSessionState 設置為 true 時,才能使用會話狀態。還請確保在應用程序配置的 <

一個類有新增元素(add)和獲取元素數量(size)方法。 啟動兩個線程。線程1向容器中新增數據。線程2監聽容器元素數量當容器元素數量5線程2輸出信息並終止

override tac trace add syn countdown print import 數據 方式一: /** * 兩個線程要是可見的所以要加上votalile */public class Test_01 { public static void

input型別number去掉上下箭頭

<input type="number"> <style> input::-webkit-outer-spin-button, input::-webkit-inner-spin-button { -webkit-appearance: n

輸入框input型別number去掉上下箭頭方式

<input type="number" ...> <style> input::-webkit-outer-spin-button, input::-webkit-inner-spin-button { -webkit-appearance

當類的指標賦值NULL類的哪些成員還可以該指標呼叫

轉自:https://blog.csdn.net/xiaoluer/article/details/53337292 該問題源自於一道面試題,題目如下所示: 看如下程式碼,請問能不能編譯通過?如果能編譯通過能不能執行成功?並說明原因     clas

重繪ListCtrl中增加子控制元件Edit是控制元件失去焦點子控制元件不進行隱藏

問題:現在有一個listctrl控制元件,需要在某一列上新增一個子控制元件edit。當點選子控制元件(edit)時,子控制元件顯示出來,父控制元件(ListCtrl)已經失去焦點了。此時,要是滑鼠點選的位置不在該控制元件內,edit處於顯示狀態,父控制元件(ListCtrl)是失去焦點狀態。

IE8中的input設定disabled字型顏色設定問題

關於Input不能修改,設定屬性可以為disabled或者readonly 但是,如果設定為disabled,關於字型顏色的設定則不再有效,disabled對顏色的設定免疫,因為顏色太淡,使用者體驗差,所以用readonly,但是readonly會出現游標的閃爍問題,需要設定屬性: $('i

Java-註解-屬性值value賦值的三種情況

1.自定義註解只有一個屬性時,且屬性名為value時,賦值時value可省略。 註解定義: public @interface Table { public String value(); } 註解使用: @Table("student") public class Stud

寫程式碼: 實現使用者輸入使用者名稱和密碼當用戶名seven且密碼123顯示登入成功否則登入失敗。

# 寫程式碼# 實現使用者輸入使用者名稱和密碼,當用戶名為seven且密碼為123時,顯示登入成功,否則登入失敗。username = input("Please enter your username: ")password = input("Please enter your password: ")if

Java的if判斷物件nullnull放在比較運算子的左邊還是右邊較好?

  如java中:if(name == null)和if(null == name)有什麼講究嗎?   答:在java裡面,它們是一樣的。但是通常寫為null == name。這其實是在C語言裡面引申出來的。   在C語言裡面,為了防止少敲一個等號,程式設計人員仍然能在編譯的時候找到錯誤。因為if(nam

訊號E如何讓語音識別脫“網”而出?

歡迎大家前往騰訊雲+社群,獲取更多騰訊海量技術實踐乾貨哦~ 本文由騰訊教育雲發表於雲+社群專欄 一般沒有網路時,語音識別是這樣的 ▽ 而同等環境下,嵌入式語音識別,是這樣的 ▽ 不僅可以幫您邊說邊識、出口成章,有個性化名字的時候也難不倒它。 這就是嵌入式語音識別的魅力。 本文將從

【筆記】mybatis+mysql當入參map如何獲取返回的自增主鍵

<selectKey resultType="java.lang.Integer" order="BEFORE" keyProperty="paramMap.id">  // keyProperty 要指定為引數map的名稱.返回的鍵名才行,入參paramMap,返回的自增主鍵