首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

详细设计一个文章页目录插件

首先需要根据文章内容的二级三级标题生成目录; 然后,页面从上到下滚动过程,需要在右侧目录里高亮当前的标题,而高亮的原则是当前标题所在的位置到浏览器可视区域顶部的距离需要小于或等于一个固定值,如上图所示...-- 这里是部分文章内容 --> 可以看到所有的二级标题(H2)三级标题(H3)都是在同一个父元素下面,且每个标题下面都包含了一个带有 headerlink 类名的链接,另外还有标题属性。...n = (口高度 - (顶部菜单高度 + 留白高度))/ 子项高 所以,最终我们可以计算出滚动高度: let DEFAULT = { lineHeight: 28, // 每个菜单的高是...这部分内容开始前,我们先来复习一个 API,该方法会返回元素的大小及其相对于口的位置: Element.getBoundingClientRect() 需求分析的时候有提到,高亮的原则是当前标题所在的位置到浏览器可视区域顶部的距离需要小于或等于一个固定值...所以需要做的就是把口高度有关的逻辑抽离出来,统一放到一个函数里,当监听到口高度变化的时候,再去执行这个函数。

2.4K20
您找到你想要的搜索结果了吗?
是的
没有找到

iOS 9人机界面指南(四):UI元素(上) - 腾讯ISUX

想要保证这样的图形始终固定在状态栏后面,你可以用视图控制器(view controller)来让它固定滚动内容上一层,又或者可以用滚动视图(scrolling view)来保证图形固定在屏幕的顶部。...让内容固定在导航栏区域外显示(这个区域由应用的statusBarFrame属性来定义)。如果你确定要这样做的话,请给导航栏区域添加固定的、与屏幕背景色相同的背景色。...重要 跟所有的标准按钮与图表相同,根据文档说明的图表含义而不是仅凭图表外观来使用这些图标是很关键的。这样能够保证在关联特定含义的按钮改变了外观的情况下,你的应用的UI仍然是可用而有意义的。...可以应用在页模式(paging mode),在此模式下用户可以通过拖拽轻击等手势来浏览一页的内容 使用滚动视图来允许用户在固定的空间内浏览大尺寸或大量的视图。 适当地支持缩放操作。...Value 2的布局,文本标题中间的垂直间距会让用户专注于副标题的第一 个单词。 ? 重要 以上四种单元格样式均支持添加表格视图元素,勾选或展开标志。

10.1K51

响应式设计

# 添加响应式的列 许多响应式设计遵循这种方法:当设计要求元素并排摆放时,只在大屏上将它们摆放在一。在小屏下,允许每个元素单独一,填满屏幕宽度。...# 流式布局 流式布局,有时被称作液体布局(liquid layout),指的是使用的容器随口宽度而变化。它跟固定布局相反,固定布局的列都是用 px 或者 em 单位定义。...固定容器(比如,设定了 width: 800px 的元素)在小屏上会超出口范围,导致需要水平滚动条,而流式容器会自动缩小以适应口。...没添加 CSS 的时候,块级元素不会比口宽,行内元素会折,从而避免出现水平滚动条。加上 CSS 样式后,就需要来维护网页的响应式特性了。...比如将每一数据单独用一块区域展示,让每块区域顺序叠放,或者用更适合小屏的可视化图形或者图表展示。但是,有时候就是需要用表格。

2K10

防御式CSS是什么?这几点属性重点防御!

在一个包装器上添加 display: flex,让子项挨着排序。 问题是,当空间不足时,那些子项默认不会被包裹成一个新的。我们需要用 flex-wrap: wrap 来改变这一为。...在这个例子,我们在右边有一个section标题一个操作按钮。目前,它看起来还不错。但是,如果标题再长一些,会发生什么呢? 注意到文本太靠近按钮了吗?...主导航次导航看起来还不错。在我看到的这个例子,开发者给二级导航添加了 position: sticky,这样它就可以粘在底部了。 然而,如果浏览器的高度较小,bug 就来了。...我们通过给元素添加一个背景色来轻松解决这个问题。这个背景只有在图片加载失败时才会显示出来。 12.小心CSS网格固定值 假设我们有一个包含asidemain的网格。...考虑以下例子: .card { display: flex; } 当标题有一个很长的词时,它不会被包成一个新

4.4K30

小智在这3年开发遇到的 CSS 问题及解决方案,有大佬帮他总结好了 !

在下面的例子,同样的按钮在 Chrome Safari ,后者添加了默认的灰色背景。 ?...当口不够高时将元素固定在屏幕顶部 如果将元素固定在屏幕顶部,如果口不够高会发生什么情况?很简单:它会占用屏幕空间,因此,用户浏览网站时可用的垂直区域就会变小,这会影响用户的体验。...解决方法不是当用户往下划动的时候,固定头部需要回到文档中跟随屏幕滚动,可以使用position: sticky来快速达到该效果。...我们告诉浏览器仅在口的高度等于或大于 500`像素时才标题固定在顶部。...RTL 布局的电话号 在从右到左的布局添加电话号码(+ 972-123555777)时,加号将定位在电话号码的末尾。要解决这个问题,重新分配电话号码的方向即可。

3.7K10

动手练一练,手写一个价格对比、固定表头滚动的表格

今天我们将通过一个界面十分漂亮功能价格对比的表格,展示固定表头的功能,实例操作展示视频所示,当滚动滚动至表格位置,添加表头固定样式,当滚动至表格底部,移除固定表头样式。...二、案例相关知识点复习 这篇案例我们是通过JS代码,判断滚动条的位置,动态添加移除表头的固定样式(fix属性),这里就需要运用几个位置相关 DOM API 才能顺利完成本案例,相关 API 介绍如下所示... 第一部分为页面标题内容,第三部分为内容介绍区域,这两部分非核心内容,只是用于内容占位,方便第二部分表格区域的展示,滚动此区域表头固定。...如果还在滚动表格的内容,我们将添加固定表头的样式stickyClass,移除取消固定的样式sticky2-table。...如果滚动滚动至第三部分内容区域,我们将移除固定表头的样式stickyClass,添加移除固定表头的样式 sticky2-table。

3.2K31

软件工程 怎样建立甘特图

首先,建立基本的图表框架时间刻度日期。您还可以选择如何设置任务栏、里程碑其他图表元素的格式。 稍后,您可以更改日期,添加或删除任务里程碑,以及创建任务间的依赖关系。...注释:“主要单位”是您要在图表中使用的最长时间单位(年或月),“次要单位”是最短时间单位(日或小时)。 在“格式”选项卡单击要在任务栏、里程碑摘要栏上使用的形状标签,然后单击“确定”。...还可以添加并优化以下日程元素: 任务​ image.png ​甘特图中的每个任务在图表框架占用一。当您在“任务名称”列的单元格中键入任务名称时,任务工期将表示为时间刻度下方区域中的任务栏。...要创建新的任务,请拖动位于框架底部中央的绿色选择手柄。 在两个现有任务之间添加新任务 右键单击要在其上方显示新任务的任意单元格,然后单击快捷菜单的“新建任务”。...删除(隐藏)数据列 右键单击要删除(隐藏)的列的标题,然后单击快捷菜单的“隐藏列”。  注释    删除或隐藏图表的列时,该列的数据将保存到文件

5K20

iOS开发中行高灵活可变的UITableView的性能优化

至于为何UITableView在进行配置时也需要拉取所有的高数据,我猜想其为了进行视图的一些初始化操作,例如表视图右侧滚动条的宽度所占比例等。...对于固定的表格视图,开发者可以直接设置TableView的固定高,如下: _tableView.rowHeight = 200; 如果高是不固定了,则应该想办法让heightForRowAtIndexPath...例如下图所示,左侧的图标进行了与父视图的左侧距离约束,标题Label进行了与父视图的上侧距离约束右侧距离约束,内容Label进行了与标题Label的上侧约束与父视图的下册约束,并且对宽度进行了约束。...关于细节方面,还有一个问题需要注意,预估的高会影响到TableView右侧滚动条的展现,如果每个cell高跳跃跨度十分大,滚动条宽度的配置会失准,随着用户滑动表视图,右侧滚动条可能会出现长短跳跃的情况...,如果开发者需要精准这个滚动条的配置,可以在如下代理方法返回具体cell的估计高。

1.9K20

Flutter | 滚动组件,ListView,GridVIew等

滚动组件 当组件内容超过当前显示口(ViewPort)时,如果没有特殊处理,Flutter 就会提示 Overflow 错误,为此,Flutter 提供了多种可滚动组件,用于显示列表长布局; 可滚动组件都直接或间接的包含一个...风格的滚动指示器(滚动条),如果要给可滚动组件添加滚动条,只需要将 Scroolbar 作为可滚动组件的任意一个父级组件即可,: Scrollbar( child: SingleChildScrollView...可滚动组件中有很多都支持 Sliver 的延时构建模型, ListView,GridView ,但是也有不支持改模型的 SingleChildScrollView 主轴纵轴 在滚动组件的坐标描述,...很多时候我们需要给列表添加一个固定表头,比如实现一个商品列表,就需要在列表添加一个 商品列表 标题 以往的经验告诉我,直接使用一个线性组件,第一个为标题的头,第二个是 listView 即可,如下:...因此,为了能让可滚动组件能 CustomScrollView 配合使用,Flutter 提供了一下可滚动组件的 Sliver 版, SliverList,SliverGrid 等,实际上 Sliver

8.5K20

Android用户界面开发概述

图表示Android图形用户界面的组件层次。 ?... TableLayout(表格布局): 以列的形式对控件进行管理,每一为一个TableRow对象,或一个View控件。... GridLayout(网格布局): 是Android 4.0新增的布局管理器,把整个容器划分成为"*列"个网格,每个网格可以放置一个组件,另外,也可以设置一个组件横跨多个列多个。...如果希望在代码控制UI界面,那么所有的UI组件都将通过new关键字创建出来,然后以合适的方式添加到UI界面即可。...当混合使用XML布局文件代码来控制UI界面时,习惯上把变化小、行为比较固定的组件放在XML布局文件管理,而那些变化较多、行为控制比较复杂的组件则交给Java代码来管理。

2.3K100

Xamarin 学习笔记 - Layout(布局)

End:该选项Start刚好相反,将View放置在布局的结束位置。 Fill:该选项将View撑满布局,不留白。 Center:该选项将视图放置在布局的正中。 视图是如何在父视图中对齐的? ?...Grid(网格布局) Grid一个表格一样。它比StackLayout更加通用,提供列两个维度以供辅助定位。在不同行之间对齐视图也很容易。...在这一部分,我们将学习如何创建一个Grid并指定列。 ?...在以上示例,颜色为Yellow Green的BoxView将不显示,然后我们向其中添加一个ScrollView,通过滚动,我们就可以看到全部的内容。...ScrollView将向界面UI添加一个滚动指示器。当我们需要指定水平滚动或者垂直滚动,再或者双向滚动时,我们可以使用到Orientation属性。

1.6K20

CSS Viewport 单位,很多人还不知道使用它来快速布局!

Vmin 单位 vmin表示口的宽度高度的较小值,也就是vw vh 的较小值。如果口宽度大于其高度,则将根据高度计算该值。 我们以下面的例子为例。 ?...第一种解决方案:calc口单位 如果header footer 的高度是固定的,那么可以将calc()函数口单位结合起来,如下所示: header, footer { height:...在我的职业生涯,我没有使用固定高度的页脚,因为在例如不同的屏幕尺寸下,此footer是不可行的。...它通常具有标题描述,并且其中上下边缘的高度固定或填充 例如,有以下的CSS的样式: .page-header { padding-top: 10vh; padding-bottom:....header { border-top: calc(2px + 0.138vw) solid $color-main; } 移动端滚动问题 移动设备存在一个常见问题,即使使用100vh,也会滚动

3.2K30

Android之布局详解

(状态栏) android:scrollbarFadeDuration 设置滚动条淡入淡出时间 android:scrollbarDefaultDelayBeforeFade 设置滚动条N毫秒后开始淡化...他可以通过相对定位的方式让控件出现在布局的任何位置,,也正因为如此,RelativeLayout的属性非常多,不过这些属性都是有规律可循的,其实不难理解记忆。...RelativeLayout还有另外一组相对于控件进行定位的属性,android:layout_alignLeft表示让一个控件的左边缘另一个控件的左边缘对齐。...如何确定行数与列数 ①如果我们直接往TableLayout添加组件的话,那么这个组件将占满一!!! ②如果我们想一上有多个组件的话,就要添加一个TableRow的容器,把组件都丢到里面!...,接着在最外层的TableLayout添加以下属性: android:stretchColumns = “1” 设置第二列为可拉伸列,让该列填满这一所有的剩余空间,代码如下: <TableLayout

2K10

Flutter 3.13 组件更新 | 欢迎 Slivers 体系 5 位新成员

介绍一下 5 个新的 Sliver 组件 在 Flutter 3.13 更新,增加了 5 位新的 Sliver 相关组件,用于滑动口中,完成特定功能。这篇文章将介绍一下它们的作用使用场景。...,映射出 SliverMainAxisGroup 列表,每个 SliverMainAxisGroup 列表可以容纳若干个 Sliver 滑块,只要让标题通过 SliverPersistentHeader...,这样一共不到百代码,就实现了分组滑动的效果,可以说是很方便的。...有些场景下,我们期望交叉轴方向可以排若干个 Sliver 滑块,共同响应滚动,特别是像宽度充裕的桌面端。 如下所示,左右三块 SliverList 水平排布,共同滑动。...解决的场景是: 在交叉轴方向,需要摆放若干个滑块时,这些滑块可以共同滚动。 ---- 4.

86620

终于等到你,新的虚拟键盘API 即将到来,快来先睹为快吧!

浏览器将向上滚动以使输入框在键盘上方,因此粘性标题浮动按钮将消失。 它看起来与以下内容相似: 这是移动浏览器的默认行为。...在技术术语,可见部分被称为口,而隐藏部分以及当前可见的部分则是布局口。 主要问题是当虚拟键盘激活时,可视口的大小会缩小。...VirtualKeyboard API 的使用案例 底部固定操作 在较小的口上,您可能需要一个固定在界面底部的呼叫行动按钮或页脚。 考虑下面的图示,我们有一个固定在底部的CTA按钮。...你可能会对由于标题固定底部的存在而导致的空间减少感到困惑。我们可以使用垂直媒体查询来在垂直空间足够的情况下显示标题。...无法滚动到页面的最底部 当口底部有一个带有 position: fixed 的项目时,我们通常会添加 padding-bottom 来偏移页面,使用户可以滚动到最底部。

33020

【Android】造轮子:轮播图

于是,我们可以这样: 需要显示的轮播图有N张 往ViewPager添加N个View,这时ViewPager中有: View(1)、View(2)、View(3) ......View(N) 再往ViewPager添加View(1),这时ViewPager中有: View(1)、View(2)、View(3) ......那就直接看代码吧 代码 思路说完,上代码 创建model 这里创建一个Info类,模拟实际应用的数据。里面有titleurl字段。...后面有两个LinearLayout,第一个LinearLayout用来放指示器,在java代码动态添加;第二个LinearLayout就用来显示Title了,当然,如果还需要显示的其他内容,可以在这个布局里面添加...rl = new RelativeLayout(context); //添加一个ImageView,并加载图片 ImageView imageView = new ImageView

1.8K50

AppBarLayoutCollapsingToolbarLayout的闲谈

其实就是向下滚动时Scrolling ViewChild View之间的滚动优先级问题。...对比scrollscroll | enterAlways设置,发生向下滚动事件时,前者优先滚动Scrolling View,后者优先滚动Child View,当优先滚动的一方已经全部滚进屏幕之后,另一方才开始滚动...这里涉及到Child View的高度最小高度,向下滚动时,Child View先向下滚动最小高度值,然后Scrolling View开始滚动,到达边界时,Child View再向下滚动,直至显示完全。...属性scrimAnimationDuration 设置控制Toolbar收缩时,颜色变化持续时间 属性 layout_collapseMode 折叠模式,有两个值 pin:固定模式,在折叠的时候最后固定在顶端...在内容滚动时,CollapsingToolbarLayout的View(比如ImageView)也可以同时滚动,实现视差滚动效果,通常layout_collapseParallaxMultiplier

1.7K30
领券