Rumah hujung hadapan web html tutorial 当 position:sticky 遇到 bootstrap 浮动布局时候的踩坑记录

当 position:sticky 遇到 bootstrap 浮动布局时候的踩坑记录

Oct 10, 2018 pm 05:41 PM
html

当第一次接触到 position:sticky 这个属性,我就意识到之前的不少 js 场景可以用这个 css 属性去改写。譬如 网站 右侧的不少广告,滚动上去后需要 fixed,完全就是 sticky 的应用啊。

今天要说的是 文章详情页 右侧的目录栏,当页面下滑的时候,它也会固定到页面顶部,之前是用 js 去监听 scroll 事件,然后根据位置进行判断,toggle fixed 的方案,出于一些原因,决定对它用 sticky 去重写。

几下就写完了,去掉滚动事件监听,然后将菜单元素 .post-nav 加上 position:sticky; top:0 样式,但是,不起效!

wtf! 百思不得其解,我开始搜索原因。在 so 搜到了 这个,说到可能是元素的父级元素有对 overflow 属性进行处理,比如加了什么 overflow:hidden 啥的,但是看了下,并没有这种情况。

然后我猜想会不会是 bootstrap 布局的问题(事实上确实有关系),写下 demo:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

<!DOCTYPE html>

<html>

<head>

  <title></title>

  <link href="//cdn.bootcss.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet">

  <style>

    body {font-size: 50px; font-weight: 900;}

    .main {height: 2000px; background: #eee}

    .menu {height: 200px; background: yellow}

    .ad {height: 200px; background: red; position: sticky; top: 0px;}

    .guess {height: 200px; background: blue;}

  </style>

</head>

<body>

<p class="container">

  <p class="row">

    <p class="col-md-8 main">content</p>

    <p class="col-md-4">

      <p class="menu">menu</p>

      <p class="ad">ad</p>

      <p class="guess">others</p>

    </p>

  </p>

</p>

</body>

</html>

Salin selepas log masuk

但是没问题,突然想到网站用的 bootstrap 版本是 3.x,然后改成 3.3.7 的版本,这时候问题就出来了。

这时候问题就比较好定位了,4.x 用的是 flex 布局,而 3.x 还是 float 浮动布局,问题应该是出在这里了。

最终代码(参考 这个 issue):

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

<!DOCTYPE html>

<html>

<head>

  <title></title>

  <link href="//cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">

  <style>

    body {font-size: 50px; font-weight: 900;}

    .main {height: 2000px; background: #eee}

    .side {height: 2000px;}

    .menu {height: 200px; background: yellow}

    .ad {height: 200px; background: red; position: sticky; top: 0px;}

    .guess {height: 200px; background: blue;}

  </style>

</head>

<body>

<p class="container">

  <p class="row">

    <p class="col-md-8 main">content</p>

    <p class="col-md-4 side">

      <p class="menu">menu</p>

      <p class="ad">ad</p>

      <p class="guess">others</p>

    </p>

  </p>

</p>

</body>

</html>

Salin selepas log masuk

对应到开始的问题上,因为 menu 是属于 .col-md-3 元素的,所以右边的 .col-md-3 需要和左边的 .col-md-9 保持高度一致即可,加上这行代码:

1

$('.side').height($('.main').height())

Salin selepas log masuk

因为左边的内容区域有图片的延迟加载,所以这行代码需要持续执行:

1

2

3

4

5

6

7

$(window).scroll(function() {

 $('.side').height($('.main').height())

 

 // other code

 // ...

 

})

Salin selepas log masuk

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。更多相关教程请访问 HTML视频教程

相关推荐:

php公益培训视频教程

Atas ialah kandungan terperinci 当 position:sticky 遇到 bootstrap 浮动布局时候的踩坑记录. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Sempadan Jadual dalam HTML Sempadan Jadual dalam HTML Sep 04, 2024 pm 04:49 PM

Sempadan Jadual dalam HTML

Jadual Bersarang dalam HTML Jadual Bersarang dalam HTML Sep 04, 2024 pm 04:49 PM

Jadual Bersarang dalam HTML

HTML jidar-kiri HTML jidar-kiri Sep 04, 2024 pm 04:48 PM

HTML jidar-kiri

Susun Atur Jadual HTML Susun Atur Jadual HTML Sep 04, 2024 pm 04:54 PM

Susun Atur Jadual HTML

Memindahkan Teks dalam HTML Memindahkan Teks dalam HTML Sep 04, 2024 pm 04:45 PM

Memindahkan Teks dalam HTML

Senarai Tertib HTML Senarai Tertib HTML Sep 04, 2024 pm 04:43 PM

Senarai Tertib HTML

Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Feb 07, 2025 am 11:57 AM

Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP?

Butang onclick HTML Butang onclick HTML Sep 04, 2024 pm 04:49 PM

Butang onclick HTML

See all articles