仅使用 CSS 的 wordpress 博客的粘性侧边栏?
Sticky sidebar for wordpress blog using only CSS?
我正在尝试将我的 wordpress 博客中的侧边栏样式设置为滚动,直到它到达小部件区域的底部,然后固定,以便它在正文内容继续滚动时始终可见。
示例:'Top Stories Sidebar' https://news.google.com/ - 'Mo Map Sidebar' http://www.yelp.com/search?find_desc=restaurants&find_loc=San+Francisco%2C+CA&ns=1
问题是,一些主流浏览器不支持 'position: sticky;',所以我想避免使用它。是否有仅使用 CSS 的替代方法?我还没有开始学习 javascript,但如果有人能指出我从哪里开始学习它以获得预期效果,我愿意比计划的更早开始。
提前致谢!
我想如果你需要 jQuery 你可以看看这个答案:
Fix object to top of browser window when scrolling
您需要将 jquery 库导入到
<head></head>
您的网站使用:
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
</head>
追逐侧边栏是否可以接受?我知道你对javascript了解不多,更不用说jquery了,所以我带你过一遍(曾经是老师)。
// the beginning part is just like css. To find something,
// \ | | / use CSS and wrap it $('inside here')
// \/ \/ \/
$('#superdiv').slideDown(800); // <----- slide down command,
// set with 800 millisecond duration
// certain words have a special meaning in javascript,
// so we add '$' to the front to avoid errors
// this variable is captured \/ with css and stored as '$sidebar'
var $sidebar = $("#superdiv"),
$window = $(window),
offset = $sidebar.offset(); // this gets the distance from our
// sidebar to the top of the screen
$window.scroll(function() {
if ($window.scrollTop() > offset.top) { // if there is more space
// than the distance scrolled
$sidebar.stop().animate({ // stop the sidebar if it is moving,
// then start animation
marginTop: $window.scrollTop() - offset.top // slowly move the
// sidebar to the new location
});
} else {
$sidebar.stop().animate({ // otherwise stop the animation and
marginTop: 0 // bring the sidebar back to the top
});
}
});
body {
background-color: lightblue;
border: 0;
margin: 0;
padding: 0;
}
#superdiv {
background-color: orange;
position: absolute;
left: 0px;
width: 150px;
padding: 10px;
display: none;
}
#superpage {
padding: 10px;
}
#masterdiv {
padding-left: 170px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="masterdiv">
<div id="superdiv">This is your sidebar.
<br>
<br>
<br>
<br>
<br>Your menu items
<br>
<br>
<br>
<br>
<br>
</div>
<div id="superpage">Here's the page
<br>
<br>
<br>
<br>
<br>1
<br>
<br>
<br>
<br>2
<br>
<br>
<br>
<br>3
<br>
<br>
<br>
<br>4
<br>
<br>
<br>
<br>5
<br>
<br>
<br>
<br>6
<br>
<br>
<br>
<br>7
<br>
<br>
<br>
<br>8
<br>
<br>
<br>
<br>9
<br>
<br>
<br>
<br>10
<br>
<br>
<br>
<br>11
<br>
<br>
<br>
<br>12
<br>
<br>
<br>
<br>13
<br>
<br>
<br>
<br>14
<br>
<br>
<br>
<br>15
<br>
<br>
<br>
<br>16</div>
</div>
我正在尝试将我的 wordpress 博客中的侧边栏样式设置为滚动,直到它到达小部件区域的底部,然后固定,以便它在正文内容继续滚动时始终可见。
示例:'Top Stories Sidebar' https://news.google.com/ - 'Mo Map Sidebar' http://www.yelp.com/search?find_desc=restaurants&find_loc=San+Francisco%2C+CA&ns=1
问题是,一些主流浏览器不支持 'position: sticky;',所以我想避免使用它。是否有仅使用 CSS 的替代方法?我还没有开始学习 javascript,但如果有人能指出我从哪里开始学习它以获得预期效果,我愿意比计划的更早开始。
提前致谢!
我想如果你需要 jQuery 你可以看看这个答案: Fix object to top of browser window when scrolling
您需要将 jquery 库导入到
<head></head>
您的网站使用:
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
</head>
追逐侧边栏是否可以接受?我知道你对javascript了解不多,更不用说jquery了,所以我带你过一遍(曾经是老师)。
// the beginning part is just like css. To find something,
// \ | | / use CSS and wrap it $('inside here')
// \/ \/ \/
$('#superdiv').slideDown(800); // <----- slide down command,
// set with 800 millisecond duration
// certain words have a special meaning in javascript,
// so we add '$' to the front to avoid errors
// this variable is captured \/ with css and stored as '$sidebar'
var $sidebar = $("#superdiv"),
$window = $(window),
offset = $sidebar.offset(); // this gets the distance from our
// sidebar to the top of the screen
$window.scroll(function() {
if ($window.scrollTop() > offset.top) { // if there is more space
// than the distance scrolled
$sidebar.stop().animate({ // stop the sidebar if it is moving,
// then start animation
marginTop: $window.scrollTop() - offset.top // slowly move the
// sidebar to the new location
});
} else {
$sidebar.stop().animate({ // otherwise stop the animation and
marginTop: 0 // bring the sidebar back to the top
});
}
});
body {
background-color: lightblue;
border: 0;
margin: 0;
padding: 0;
}
#superdiv {
background-color: orange;
position: absolute;
left: 0px;
width: 150px;
padding: 10px;
display: none;
}
#superpage {
padding: 10px;
}
#masterdiv {
padding-left: 170px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="masterdiv">
<div id="superdiv">This is your sidebar.
<br>
<br>
<br>
<br>
<br>Your menu items
<br>
<br>
<br>
<br>
<br>
</div>
<div id="superpage">Here's the page
<br>
<br>
<br>
<br>
<br>1
<br>
<br>
<br>
<br>2
<br>
<br>
<br>
<br>3
<br>
<br>
<br>
<br>4
<br>
<br>
<br>
<br>5
<br>
<br>
<br>
<br>6
<br>
<br>
<br>
<br>7
<br>
<br>
<br>
<br>8
<br>
<br>
<br>
<br>9
<br>
<br>
<br>
<br>10
<br>
<br>
<br>
<br>11
<br>
<br>
<br>
<br>12
<br>
<br>
<br>
<br>13
<br>
<br>
<br>
<br>14
<br>
<br>
<br>
<br>15
<br>
<br>
<br>
<br>16</div>
</div>