首页 > 其他分享 >如何将网页中的目录完美地浮动在主要内容的侧边距中

如何将网页中的目录完美地浮动在主要内容的侧边距中

时间:2023-05-10 22:46:23浏览次数:50  
标签:网页 -- 50% 侧边 width 江月 距中 border left

诸安,我是之于言者。

去年我在编写戴森球计划wiki时遇到一个需求:

将文档流中的目录提取出来,使之固定在屏幕左侧。

简而言之,就是将这样的网页:
image

转化成这样的网页:
image

原来的网页源代码可以简写成这个样子:

<!DOCUMENT html>
<html>

<head>
	<style>
	:root{
	--border--:1px solid rgba(5, 109, 232, 0.5);
	}
	#content{
	max-width:1080px;
	margin:24px auto;
	border:var(--border--);
	padding:24px;
	}
	h1{border-bottom:var(--border--);}
	#toc{border:var(--border--);max-width:20%;color: rgba(5, 109, 232, 0.5);}
	</style>
</head>
<body>
	<div id="content">
		<h1>标题</h1>
		<ul id="toc">
			<li>第一项</li>
			<li>第二项</li>
			<li>第三项</li>
		</ul>
		<h2>第一项</h2>
		<p>
		春江潮水连海平,海上明月共潮生。滟滟随波千万里,何处春江无月明!江流宛转绕芳甸,月照花林皆似霰。空里流霜不觉飞,汀上白沙看不见。江天一色无纤尘,皎皎空中孤月轮。江畔何人初见月?江月何年初照人?人生代代无穷已,江月年年望相似。不知江月待何人,但见长江送流水。白云一片去悠悠,青枫浦上不胜愁。谁家今夜扁舟子?何处相思明月楼?可怜楼上月徘徊,应照离人妆镜台。玉户帘中卷不去,捣衣砧上拂还来。此时相望不相闻,愿逐月华流照君。鸿雁长飞光不度,鱼龙潜跃水成文。
		</p>
		<h2>第二项</h2>
		<p>
		春江潮水连海平,海上明月共潮生。滟滟随波千万里,何处春江无月明!江流宛转绕芳甸,月照花林皆似霰。空里流霜不觉飞,汀上白沙看不见。江天一色无纤尘,皎皎空中孤月轮。江畔何人初见月?江月何年初照人?人生代代无穷已,江月年年望相似。不知江月待何人,但见长江送流水。白云一片去悠悠,青枫浦上不胜愁。谁家今夜扁舟子?何处相思明月楼?可怜楼上月徘徊,应照离人妆镜台。玉户帘中卷不去,捣衣砧上拂还来。此时相望不相闻,愿逐月华流照君。鸿雁长飞光不度,鱼龙潜跃水成文。
		</p>
		<h2>第三项</h2>
		<p>
		春江潮水连海平,海上明月共潮生。滟滟随波千万里,何处春江无月明!江流宛转绕芳甸,月照花林皆似霰。空里流霜不觉飞,汀上白沙看不见。江天一色无纤尘,皎皎空中孤月轮。江畔何人初见月?江月何年初照人?人生代代无穷已,江月年年望相似。不知江月待何人,但见长江送流水。白云一片去悠悠,青枫浦上不胜愁。谁家今夜扁舟子?何处相思明月楼?可怜楼上月徘徊,应照离人妆镜台。玉户帘中卷不去,捣衣砧上拂还来。此时相望不相闻,愿逐月华流照君。鸿雁长飞光不度,鱼龙潜跃水成文。
		</p>
	</div>
</body>

</html>

要实现图片中的效果,只要添加如下css:

#toc {
    position: sticky;
    top: 60px;
    float: left;
    margin-left: calc(50% - 50vw);
    width: calc(50vw - 50%);
    max-height: 80%;
}

这其中用到的知识有:

  1. 粘性定位
  2. 浮动
  3. 引入数学公式计算外边距与宽度
    其中『50vw』指屏宽的50%,而『50%』指父元素的50%

但是,这样的样式仅适用于一般的电脑屏幕,对于更宽的高像素屏或更窄的移动端屏幕则力有未逮。为了自适应不同屏宽,最后我们可以使用媒体查询来做到面面俱到。

具体而言,我们可以把上面的代码改成这个样子:

@media (min-width: 1200px){
	#toc{
	position:sticky;
	top:60px;
	float:left;
	margin-left:calc(50% - 50vw);
	width:calc(50vw - 50%);
	max-height:80%;
	}
}
@media (min-width: 1600px){
	#toc{
	position:sticky;
	top:60px;
	float:left;
	margin-left:-256px;
	width:256px;
	max-height:80%;
	}
}

如此,最终我们得到了理想的效果。

标签:网页,--,50%,侧边,width,江月,距中,border,left
From: https://www.cnblogs.com/-zyyz-/p/17389246.html

相关文章

  • 网页设计师的11个好帮手
    如果你是Web设计师,想设计一些东西,但苦于不到好的工具或者软件。或者你想跳槽,不知道设计师如何才能找到适合的工作,怎么办?又或者你的设计工作太枯燥了,想偶尔娱乐一下,又该找谁?下面11个软件或者网站应该对你非常有用。 1) CS6&CreativeCloud:这两个软件值得拥有,你懂的。 2)Coda......
  • 微信开发之网页授权 PHP
    微信开发文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html一、公众号配置在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发-接口权限-网页服务-网页帐号-网页授权获取用户基本信息”的配置选项......
  • 波场(Tron) 网页版钱包开源
    之前做区块链项目太难了,很多组件、工具没有开源项目,需要自己写很麻烦。我整理了几个自己给公司开发项目的时候,分离出来的几个工具,已经上传到Gihub了,感觉浏览量还行,在这里给园子里的朋友分享下。 1、本地网页版本钱包:为了方便管理项目里所有用户的私钥,用一套助记词派生出所......
  • 本地图文直接复制到网页编辑器中
    ​ 自动导入Word图片,或者粘贴Word内容时自动上传所有的图片,并且最终保留Word样式,这应该是Web编辑器里面最基本的一个需求功能了。一般情况下我们将Word内容粘贴到Web编辑器(富文本编辑器)中时,编辑器都无法自动上传图片。需要用户手动一张张上传Word图片。如果只有一张图片还能够接......
  • python+selenium+js操作网页元素
    调用JS语法需要用到selenium中的方法 execute_script() ,参数直接填写JS语法。#1、通过元素id属性,获取元素document.getElementById('id');#2、通过元素name属性,获取元素列表document.getElementsByName(‘name’);#3、通过标签名,获取元素列表document.getElementsByT......
  • 【小小Demo】网页视频通话
    工程名video-call一个简单的音视频通话demo,包含:视频、麦克风、屏幕共享操作。项目环境jdk1.8ideamavenspringboot2.1.1.RELEASEwebsocketthymeleaf项目启动修改maven设置打开IDEA设置:File>Setting>Build,Exec...如下图所示启动找到启动类,鼠标右键点击三角......
  • FreeCodeCamp-通过创建一架钢琴来学习响应式网页设计
    index.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><title>Piano</title><metaname="viewport"content="width=device-width,initial-scale=1.0&q......
  • Typora 隐藏侧边栏图片文件夹
    前言在使用Typora的时候,我将图片的保存路径设置为了如下所示:这样设置是为了更方便的管理笔记中的图片,但图片文件夹却也显示在了侧边栏中,随着笔记增多,我的侧边栏越来越乱...难道要忍气吞声吗?那必不可能,在经过长时间的寻找,终于有了解决办法!解决方法参考这篇文章「md之Typor......
  • 一个网页的控件很碍眼,怎么能将它关闭掉?
    ctrl+shift+i打开开发者模式,用小箭头选中控件右击“Hiddenelement”,或者Editattribute,添加属性class="display:none"。前者更简单,后者更彻底。......
  • webservie 客户端读取服务器端日志例子(以网页展现)
    importjava.io.BufferedInputStream;下面是一个完整的servlet,直接复制它既可以使用,只需要修改红色部分路径即可,本例使用方法:在浏览器直接键入URL:即可展现日志,如下:http://localhost:8888/BPMDemo/BPMClientLogService?point=p1代码:importjava.io.BufferedReader;imp......