使用本机 CSS 和 HTML 设置漏斗堆栈布局样式

2024-02-22

我想显示类似漏斗堆栈的数据,如下图所示。

我能够使用边框创建锥度,例如:

<div class="taper"></div>

并使用以下 CSS:

.taper {
    width: 200px;
    height: 0px;
    border-color: lightgray transparent;
    border-style: solid;
    border-width: 50px 25px 0 25px;
} 

当然,我们的想法是把它包装起来div.taper在容器中,添加其他元素并根据需要放置它们,需要一些工作但可行。

但是,我不一定知道需要多少条线(本例中为 7 层),而且我也不想进行大量数学计算来确定每个锥度的宽度等。

是否有更防弹的方法来做到这一点?

我不想要基于 JavaScript/jQuery 的解决方案(试图保持轻量级),并且更愿意避免背景图像(我可能想要稍后换肤/自定义颜色,并且不想打扰图像文件)。

小提琴参考:http://jsfiddle.net/audetwebdesign/fBax3/ http://jsfiddle.net/audetwebdesign/fBax3/

浏览器支持:现代浏览器很好,旧版支持,只要它能很好地降级。


TL;DR: 请参阅示例http://jsfiddle.net/97Yr6/ http://jsfiddle.net/97Yr6/


创建漏斗堆栈的一种方法是使用伪元素:使用这个基本标记

<ul>
    <li>1,234,567,890 <span>Tooltip: 0</span></li>
    <li>234,567,890 <span>Tooltip: 0</span></li>    
    <li>23,456,789</li>    
    <li>2,345,678 <span>Tooltip: 0</span></li>    
    <li>234,567</li>  
    <li>23,567  <span>Tooltip: 0</span></li>
    <li>4,567<span>Tooltip: 0</span></li>    
    <li>789</li>    
    <li>23 <span>Tooltip: 0</span></li>
    <li>4 <span>Tooltip: 0</span></li>    
</ul>

我们可以使用边框创建漏斗,因此我们可以这样绘制一种梯形作为背景:

ul { 
    position: relative; 
    overflow: hidden; 
    font: 14px Arial; 
    margin: 0; padding: 0; 
    list-style: none; 
    text-align: center; 
}


ul:before { 
    content: "";
    position: absolute;
    z-index: -1;
    left: 50%;
    margin-left: -120px;
    width: 0;
    border-top: 800px solid #ccc;
    border-left: 120px solid #fff;
    border-right: 120px solid #fff;
}

The <ul>是 100% 宽,所以我们可以给它一个text-align: center并且所有金额都正确居中

然后元素之间的空间也可以再次使用伪元素获得:

li:after,li:before {
   content: "";
   display: block;
   height: 0.4em;
   background: #fff;
   width: 100%;
}
li:before { border-top: 1px dotted #ccc }
li:first-child:before { border: 0; }

而工具提示文本可以定位(<li>需要有position: relative定义),尝试适当调整两者left and margin-left属性(特别是对于较低的屏幕分辨率,但您可以使用媒体查询来实现此目的),例如

li span {
    position: absolute;
    left: 60%;
    white-space: nowrap;
    margin-left: 100px;
}

li:nth-child(2) span { left: 59%; }
li:nth-child(3) span { left: 58% }
li:nth-child(4) span { left: 57% }
li:nth-child(5) span { left: 56% }
li:nth-child(6) span { left: 55% }
li:nth-child(7) span { left: 54% }
li:nth-child(8) span { left: 53% }
li:nth-child(9) span { left: 52% }
li:nth-child(10) span { left: 51% }

基本上这个例子甚至可以工作IE8如果你改变每一个:nth-child使用邻接选择器(例如li + li + li + ... + span )

希望它能有所帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用本机 CSS 和 HTML 设置漏斗堆栈布局样式 的相关文章

  • 从顶部开始在同一水平线上显示同一行中的两个 div

    这是我的代码 floating box display inline block width 150px margin 10px border 3px solid 73AD21 after box border 3px solid red
  • 如何设置视频文件的预览,从输入类型='文件'中选择

    在我的模块之一中 我需要从 input type file 浏览视频 之后我需要在开始上传之前显示选定的视频 我使用基本的 HTML 标签来显示 但它不起作用 这是代码 document on change file multi video
  • 可以将position:absolute元素设为粘性吗?

    In CSS position sticky使元素能够显示position static行为 即 它采用文档流中的默认位置 直到到达某个滚动位置 然后采用position fixed行为 那么 这是否意味着我们不能使用position st
  • 理解 z-index:该元素如何出现在其父级同级元素的前面?

    为什么当我删除时红色 div 位于绿色 div 前面z index from wrapperRed 感觉像z index是沿着链条向上继承的 如果我改变z index将绿色 div 更改为 6 即使删除第一句中描述的行后 它仍保留在红色 d
  • 古老的“字幕”标签的替代品?

    marquee 标签的标准等效项是什么 我正在寻找 HTML C asp NET 或 ASPX jquery java 脚本的解决方案 marquee 标签未包含在标准中 因为它是 视觉 标签 而不是 语义 标签 因此 您想要的任何语言都没
  • 单击导航项锚链接时如何关闭切换菜单

    请看我的FIDDLE http jsfiddle net ayhpp8ax 我有一个带有 响应式 导航菜单 带有指向页面上元素的锚链接 的 1 页网站 当浏览器视口小于特定宽度 在我的情况下为 767px 时 使用此 javascript
  • createHTMLNotification() 替换

    我创建了一个 Chrome 扩展程序 其中使用createHTMLNotification 在所有内容之上显示一个窗口 然而 从 Chrome 28 开始 谷歌决定放弃createHTMLNotification 完全 为什么 谷歌 为什么
  • 在 ember-cli 中安装 Foundation 5

    我对 ember 相当陌生 对构建工具也很陌生 我目前正在使用通常的基础安装以及基础 cli 和指南针来编译我的 css 这有点痛苦 并且对于团队工作来说非常糟糕 我认为用 Bower 安装文件并使用会更好ember cli compass
  • 网站在 iPhone 屏幕右侧显示空白区域

    我遇到问题http eiglaw com http eiglaw com iPhone 屏幕右侧显示约 25 像素宽的空白 边框 我在 stackoverflow 上研究了这个问题 这些帖子是相关的 但是当我尝试提供的各种解决方案时 我无法
  • CSS 继承、别名和其他很酷的东西

    有一天 我随机浏览网页 发现了一些程序 可以让你编写 CSS 别名和其他很酷的东西 我现在不记得了 举个例子 我记得你可以这样做 myclass background color red greenfont 其中 greenfont 在其他
  • 如何使用javascript确保元素仅在圆上朝一个方向移动?

    好吧 我承认我对三角学真的很糟糕 出于上下文的考虑 我将添加我在这里提到的问题中的内容 参考问题 https stackoverflow com a 39429290 168492 https stackoverflow com a 394
  • 合并 2 个大型 CSS 文件的有效方法

    我正在寻找一个可以合并 2 个大型 CSS 文件的工具 到目前为止我尝试过的所有方法 例如CSSMerge 都没有成功 其中一些只是随机删除属性 其他人则因 webkit 和 moz 等非标准属性而窒息 并给我错误 我还需要保留每条规则大小
  • 使用 JavaScript 移动页面上的按钮

    我的按钮可以移动 但奇怪的是 我无法弄清楚偏移是否有问题 我希望我的按钮随着鼠标光标移动 但现在它的移动方式不是我想要的 有时它会消失 另外 创建的新按钮是重叠的 我不知道如何解决这个问题并拥有更好的外观 var coorA var coo
  • 如何始终将焦点保持在文本框中

    我创建了一个包含两个 div 的 HTML 页面 左侧的 div 页面的 90 是 ajax 结果的目标 右侧的 div 页面的 10 包含一个文本框 该页面的想法是在文本框中输入零件编号 通过条形码扫描仪 并显示与该零件编号匹配的绘图 显
  • 为什么我的交互式图像仅在 Internet Explorer 上出现故障?

    我的问题 我为自己制作了一个图像地图 交互式图像 它在 Chrome safari 和 Firefox 上完美运行 然而 当我在可怕的互联网浏览器上尝试它时 它真的很糟糕 这些小点应该扩展到更大的盒子中 在互联网浏览器上它要么不起作用 要么
  • 具有 100% 高度行和 Internet Explorer 9 的表格

    我有以下示例 div style height 150px background color AAAAFF div
  • 使用 Javascript 设置 cookie [重复]

    这个问题在这里已经有答案了 我正在尝试构建我的第一个移动应用程序 它需要连接到我的 mysql 数据库并使用 json 返回数据 这很好 目前我有一个登录系统 一旦确定用户名和密码存在 它就会返回一条成功消息 对于下一步 我想在我的页面上使
  • 使用javascript动态更新css内容

    需要将 css 更新为动态值 我不确定最好的方法是什么 div style zoom 1 div 缩放级别将根据窗口大小调整触发 应用程序将相应缩放 我将此应用程序加载到 cordova 中并让它在 iPAD 中运行 然后我意识到需要使用
  • 使用 CSS 折叠和展开元素

    我正在尝试构建一个页面 加载时仅可见标题 并且 当用户单击标题时 每个标题下方的表格会在隐藏和显示状态之间切换 我的限制是只能在 CSS 中执行此操作 这是我到目前为止想到的 https jsfiddle net Argoron c1ypx
  • 从 PHP 数组生成 HTML 表

    我不明白这一点 我需要解决看似简单的问题 但这超出了我的逻辑 我需要编写一个函数 table columns input cols 它将输出一个表 示例 input array apple orange monkey potato chee

随机推荐

  • 从字典在同一个图表上创建多个箱线图

    我正在尝试创建一个图表 其中 x 轴是字典的键 箱线图来自字典内的信息 我的字典可以有很多键 Data ABC 34 54 34 345 34 761 DEF 34 541 34 748 34 482 for ID in Data plt
  • 从 SFTP 服务器打开 Astropy FITS 文件

    我有一个 Python 脚本 可以使用 Paramiko 模块 ssh 到远程服务器 下面是我的脚本 import paramiko ssh paramiko SSHClient ssh set missing host key polic
  • Wildfly 10 启动时无法加载 MySQL XA 驱动程序

    我有一个正在 Wildfly 10 0 0 中部署的 Web 应用程序 它需要 mysql xa 驱动程序 我有以下错误 2015 10 13 12 25 37 979 错误 org jboss as controller manageme
  • 如何将代码从 C# 转换为 PHP [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个用纯 C 编写的业务逻辑类 没有这种语言的任何特定内容 我会将此代码转换为 PHP 我可以编写自
  • Golangrequirements.txt 等效项

    来自 python django 世界 如果能有一个 go revel 的类似requirements txt 的东西那就太好了 我怎样才能做到这一点 我知道我可以编写一个requirements txt 文件 然后执行类似的操作 cat
  • 直接从 numpy 进行 h.264 编码

    我想直接从视频帧的 numpy 数组中编码视频 Open cv 通过以下方式提供此类功能cv2 VideoWriter 但是我需要 h 264 编解码器 但该编解码器不可用 到目前为止 我最好的方法是使用 open cv 编写视频 然后通过
  • Telegram 机器人 - OAuth 授权

    我想在我的机器人上通过 Twitch API 实现 OAuth 授权 当我寻找更好的解决方案时 我发现了这个 GitHubBot 在此机器人重定向 URL 中 从integrations telegram org github 开始 我想知
  • Struts2 JSON 插件:添加 ActionMessages、ActionErrors 和 FieldErrors 到响应

    我正在制作 JQuery Ajax 帖子 并且想要任何actionmessages actionerrors and fielderrors添加到响应中的操作中 以 JSON 格式 我添加了这个结果
  • Android设置位图到Imageview

    您好 我有一个 Base64 格式的字符串 我想将它转换为位图 然后将其显示到 ImageView 这是代码 ImageView user image Person person object Override protected void
  • @RequestBody如何区分未发送的值和空值?

    PatchMapping update HttpEntity
  • PouchDB:过滤、排序和分页

    与这两个 CouchDB 问题非常相似 3311225 https stackoverflow com questions 3311225 couchdb sorting and filtering in the same view and
  • 如何从 Flutter 中的字符串中删除/检测整个表情符号?

    我想在 Flutter 或 Dart 中模拟字符串中的键盘退格删除事件 就像是 String str hello 你们 myBackspace str will return hello 你们 myBackspace str will re
  • 具有与区域设置无关的 ID 的 get-counter

    我正在尝试通过 cmdlet 访问以下反向路径get counter以与语言环境无关的方式 Memory Pool Nonpaged Bytes 我按照中的说明进行操作这个线程 https stackoverflow com questio
  • 网络应用程序应该具有自动更新功能吗?

    在看到 Microsoft 给人们升级 Internet Explorer 6 时遇到的一些问题以及 Firefox 如何进行自动更新后 我开始考虑我们的 Web 应用程序的推送式升级系统的优点和缺点 您认为网络应用程序应该具有自动更新功能
  • NodeJS 4 和 5 npm 安装 bcrypt 和 db-migrate 失败

    前一段时间我安装了 NodeJS v0 10 31 并在一个项目上工作没有问题 但最近我决定更新到 Node v5 0 0 一切都很好 直到我决定使用 bcrypt 和 db migrate 调用命令npm 安装将无法吐出一长串详细信息 但
  • Magento - 通过库存查找缺货产品

    在我的 Magento 商店中 在将新库存添加到缺货商品后 我有时会忘记从下拉列表中选择 有货 是否有可能以某种方式获取所有有库存但标记为 缺货 的产品的列表 如果您能够快速编写一些脚本 products Mage getModel cat
  • Django 管理员:如何过滤整数字段以获取特定范围的值

    如何在 Django Admin 中创建过滤器以仅显示整数值位于两个值之间的记录 例如 如果我有一个模型 Person 它具有年龄属性 并且我只想显示年龄在 45 到 65 之间的 Person 记录 您可以使用以下方式过滤字段querys
  • numpy:累积多重数计数

    我有一个可能有重复的有序整数数组 我想计算连续的相等值 当一个值与前一个值不同时从零重新开始 这是使用简单的 python 循环实现的预期结果 import numpy as np def count multiplicities a r
  • 用于测试私有方法的Java工具?

    对于测试私有方法的意义有不同的看法 例如 here https softwareengineering stackexchange com questions 16732 unit testing internal components a
  • 使用本机 CSS 和 HTML 设置漏斗堆栈布局样式

    我想显示类似漏斗堆栈的数据 如下图所示 我能够使用边框创建锥度 例如 div class taper div 并使用以下 CSS taper width 200px height 0px border color lightgray tra