无需 JavaScript 即可模拟 bootstrap side popover

2024-01-05

我有一个仅支持现代浏览器的网站。

我喜欢 bootstrap popover 的美感,但真的不喜欢它如何依赖 jquery 小部件和 javascript 来定位箭头。我理解为什么它曾经是必要的,但现在确实不应该了。

我想看看我是否能得到类似的东西带有侧箭头的引导弹出窗口 http://getbootstrap.com/javascript/#popovers使用所有受支持的 css3 技术创建(因此 flexbox 等都在发挥作用)。

我可以非常接近 http://jsbin.com/niponibi/1/edit?html,css,output.

这是我的(玉)html。我将有一个包含一些内容的段落,后面是一个输入,该输入在右侧有一个弹出窗口,并有一个指向它的箭头,后面是更多内容。

    p some content.
    .popout-container
      input
      aside.popout
        .flex-container
          i.arrow
          .container
            p Here is a popout
            p It contains some text
    p some more content.

这是我用来非常接近的样式表(less)(当然实际上我会有一个箭头的 svg 图像而不是使用 :after content

.popout-container {
  white-space: nowrap;
  &>* {
    display: inline-block;
  }
}
.popout {
  .flex-container {
    display: flex;

    .container {
      border: 1px solid blue;
      border-radius: 5px;
      background-color: white;
      box-shadow: 5px 5px #ccc;
      padding: .5em;
    }
    .arrow {
      display: flex;
      flex-direction: column;
      &:after {
        content: "<";
        margin: auto;
        background-color: white;
        margin-right: -1px;
        z-index: 100;
      }
    }        
  }
}

我遇到的最大问题是我正在使用white-space: nowrap将弹出窗口定位到输入的一侧。这正确地对齐了箭头,但增加了.popout-container在上面的内容和输入之间创建空间。此外,html 文档中与弹出窗口处于相同位置的任何元素都显示在其顶部(因为它不是绝对定位的)。

我可以使用 flexbox 来定位 http://jsbin.com/niponibi/3/edit?html,css,output弹出窗口到输入的一侧。使用margin: auto箭头正确对齐,但现在弹出窗口完全包含在与内容相同的框中。

弹出窗口确实需要position: absolute但即使使用弹性盒这会将弹出窗口从容器中分离出来,并且不再对齐箭头 http://jsbin.com/niponibi/4/edit?html,css,output.

有没有办法达到这样的效果呢?我怀疑解决方案是使用 csscalc功能和position: absolute但我不太明白。

例如使用弹性盒、绝对位置和重新定位弹出框margin-top: calc(-50% + 8px) http://jsbin.com/niponibi/7/edit?css,output在特定窗口大小的 chrome 上看起来相当不错,但在 firefox 和不同窗口大小下需要不同的值(为什么!?),并且在 IE 11 上根本不对齐箭头(同样,为什么?IE11 支持display: flex and margin: auto正好)。


视觉部分非常简单,无需求助于 SVG。它是不是太难 http://jsfiddle.net/luxfx/L5dKv/2/使用 CSS :before 制作漂亮的箭头。例如。:

&:before {
        content: '';
        position: absolute;
        width: 14px;
        height: 14px;
        background: inherit;
        bottom: -8px;
        left: calc(unquote('50% - 7px'));
        transform: rotate(45deg);
    }

正如您所说,最困难的部分是定位,尤其是垂直定位。我怀疑这是引导脚本涉及的大部分内容。

我发现 calc() 是两个方向定位的最佳工具,尽管与 SASS 或 LESS 一起使用有点痛苦,因为 calc() 也是内置的,然后你必须用unquote('').

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

无需 JavaScript 即可模拟 bootstrap side popover 的相关文章

  • 每 2 行后使 html 表格的边框变厚

    我创建了一个包含一些内容的表 其中有 12 行和 2 列 我想显示边框 但每 4 行之后 我想将水平边框设置为比正常情况更粗 怎么做 请在这里帮忙 试试这个选择器 table tr nth of type 4n td border bott
  • 删除特定数据表上的所有边框

    我需要使用 PrimeFaces 隐藏一个数据表的所有边框 而不是全部 我尝试了很多事情 但没有人奏效 有谁知道该怎么做 我已将以下样式 单独 应用于ui datatable class border hidden important bo
  • 单击导航项锚链接时如何关闭切换菜单

    请看我的FIDDLE http jsfiddle net ayhpp8ax 我有一个带有 响应式 导航菜单 带有指向页面上元素的锚链接 的 1 页网站 当浏览器视口小于特定宽度 在我的情况下为 767px 时 使用此 javascript
  • html 电子邮件内的背景图像 css - Gmail 不支持

    我想向我的用户发送如下所示的带有背景图像 css 的 html 正文电子邮件 div style width 500px height 1000px background color black background image none
  • 滚动时的 CSS 背景模糊

    我有固定的背景图像 滚动时我希望图像变得模糊 我知道如何在 css 中进行模糊 但在特定的滚动位置进行 这是一个例子 https medium com good music f160ba9e6c52 https medium com goo
  • 如何在Yii框架中向Form添加类?

    我在 Yii 中有一个表单 我想向该表单添加一个类
  • javascript 选择自定义光标 (svg)

    我正在动态地将光标更改为悬停时的本地 svg element on mouseover function this css cursor url svgs pointer svg 9 30 auto 工作正常 但我想选择该 svg 来操纵其
  • 为什么我的交互式图像仅在 Internet Explorer 上出现故障?

    我的问题 我为自己制作了一个图像地图 交互式图像 它在 Chrome safari 和 Firefox 上完美运行 然而 当我在可怕的互联网浏览器上尝试它时 它真的很糟糕 这些小点应该扩展到更大的盒子中 在互联网浏览器上它要么不起作用 要么
  • 主页(网格)上的缩略图现在显得模糊。如何纠正?

    我不知道这看起来是否愚蠢 但从早上开始我就无法纠正这个突然出现在我的博客网站上的错误www candidopinions in http www candidopinions in 我有一个网格视图模板 其中博客文章中的特色图像作为调整大小
  • SVG 动画不适用于 Chrome 中的 favicon

    In the SVG 图标已设置 这是旋转内圆的SVG文件的内容 Favicon 动画在 Chrome 中根本不起作用 如何让它在 Chrome 中工作 在 Firefox 中可以正常工作 在 Edge 中则不行 但 Chrome 是最重要
  • 使用反增量更改 z-index

    我尝试制作一个图像滑块 当鼠标悬停在一个点上时 它将显示图片 我也尝试使用在图像之间切换z index但什么也没动 slider counter reset index 1000 slider input name slide switch
  • 如何为 HTML 元素创建鼠标拖动滑块?

    我发现的许多滑块插件要么仅单击以查看下一个图像 要么如果它们确实具有鼠标拖动或触摸拖动功能 则仅允许图像 有谁知道为任何 html 元素编写鼠标拖动滑块的插件或可能的方法 我专门使用 SVG 但将来如果能在 div 元素之间滑动就更好了 H
  • 在 React 中切换 css 类

    如何使用布尔值切换 React 中元素上 css 类的存在 在 Angular 2 中我可以这样做 class red isRed 如何在 React 中做熟悉的事情 在 React 中 元素使用如下语法获取它们的类 div div 但请注
  • CSS:仅显示字符串的前两个字母

    是否可以使用纯 CSS 仅显示字符串的前两个字母 到目前为止我已经尝试过 没有成功 first letter 仅针对第一个字母 无论如何对我不起作用 nth of everything 需要额外的 javascript 文本溢出 省略号 正
  • Safari 中的 css3 边框半径动画过渡不起作用

    尝试在 Safari 中对图像的边框半径进行 css3 轻松过渡 它只是有点闪烁进入悬停状态 而不是平滑过渡 任何帮助深表感谢 我的代码如下 CSS all a hover img webkit border radius 50 moz b
  • 先按行再按列布局 div

    我有一个容器div and 3 div里面如下 div div 1 div div 2 div div 3 div div 不知道每一个的内容div内部 但它们的高度和宽度是可变的 集装箱的高度由最高的决定div inside 我想展示这些
  • 悬停此元素时隐藏元素后的伪元素

    我的菜单垂直放置在页面左侧和菜单之间 li 我有一个 after那是一个分隔符 我想要的是当我悬停元素本身 如果它是第一个元素 时隐藏 after 元素 或者当它是中间元素时隐藏上面和底部的元素 如果它是最后一个子元素 则隐藏 after前
  • 刷新页面时保存用户的选择

    我目前有一个页面显示不同团队的数据 我有一些数据 用户可以单击使其处于 打开 或 关闭 状态 并为每个数据显示不同的图标 它基本上就像一个清单 只是没有物理复选框 我想记住哪些 复选框 已被选中 即使在用户刷新页面或关闭浏览器并稍后返回之后
  • CSS溢出文本显示在几行中,没有断字

    我有一些长文本显示在 div 中 该 div 具有固定的宽度和高度 我希望文本显示在几行上 作为 div 高度 并且句子单词不会中断 一行中的单词前缀和下一行中的继续 此外 我想在末尾添加省略号最后一句话 CSS white space n
  • 在 Nexus 7 2013 上更改方向时 CSS 媒体查询不起作用

    我目前正在我的笔记本电脑 台式电脑和 Nexus 7 2013 上测试 CSS 媒体查询 除了 Nexus 7 之外 它们在台式机和笔记本电脑上都运行良好 当我更改方向时 除非刷新页面 否则样式不会应用 例如 以纵向模式握住设备时 页面正常

随机推荐

  • redux框架wordpress调用变量

    我已经通过 wordpress 安装了 redux 插件 非常棒 我一直在使用demo内容来熟悉框架 但我不知道如何调用模板中的数据 我已经使用选项树很长时间了 并发现了这一点 这是我认为正确的呼唤 但我想不是 这是我认为可以上传徽标的代码
  • 策略模式的功能类比是什么?

    免责声明 我不使用函数式语言 只是试图理解 FP 的某些部分 Google 建议使用 lambda 的一阶函数可以提供与策略模式提供的类似功能的文章 然而我们需要以某种方式匹配数据和相应的 lambda 通过 OO 设计 这是自动完成的虚拟
  • Chef服务器密码重置

    我在我的 Linux 机器上安装并运行了我自己的 Chef 服务器 当我访问厨师服务器用户界面时 它询问我用户名和密码 不幸的是我忘记了密码 我知道我的用户名是admin 我怎样才能恢复我的密码 用户界面中也没有忘记密码选项 我更改了默认密
  • 仅针对此过程登录 Windows 网络共享 (SMB)

    在整个用户会话中 例如 登录 Windows 网络共享 SMB 很容易 net use WNetAddConnection2 etc 有没有类似的方法只会影响我当前的流程 也许是某种令牌系统 如果确实没有其他选择 整个会话身份验证是可以的
  • 如何使用 Facebook(或其他 ID)登录我的 ASP.NET 应用程序?

    像 SO 这样的网站如何允许您通过 Facebook OpenID Google Blogger Twitter 等验证自己的身份 我正在编写一个 ASP NET C 站点 除了提供任何其他站点具有的常规普通用户名 密码之外 我希望能够接受
  • 如何禁用“ActiveX 控件可能不安全”弹出窗口

    在 我的电脑 上的 HTML 文件中 我尝试在脚本中使用 Scripting FileSystemObject 如何禁用弹出窗口 此页面上的任何 ActiveX 控件对于脚本编写可能不安全 Internet 选项 安全窗格允许将 初始化并编
  • 是否可以缩短自定义视图名称?

    假设我创建了一个名为的自定义视图MyView并想在 xml 中使用它 视图位于com example包裹 我需要做这样的事情
  • 用逗号分割以及如何从分割中的引号中排除逗号

    蟒蛇2 7代码 cStr aaaa bbbb ccc ddd newStr cStr split print newStr gt aaaa bbbb ccc ddd 但是 我想要这个结果 result aaa bbb ccc ddd 解决方
  • Angular 9 生产构建错误 - 需要伪类或伪元素

    Angular 9 项目 ng 服务工作正常 但是当我进行生产构建时出现以下错误 块 runtime 5d6d7c5bcca533f7263c js 运行时 1 46 kB 条目 渲染 块 1 main d2b72f349c71c888a6
  • Hsqldb 存储过程

    我正在尝试在内存 Hsqldb 数据库中设置一个存储过程以进行测试 我正在使用的存储过程是在 MySql 中开发的 因此我想使用 HSqlDb 设置它以适应我的测试套件 我正在尝试创建该过程的简化版本 但目前还没有任何乐趣 程序是 CREA
  • Tensorflow Metal 插件已注册错误

    我已经使用安装了 Tensorflow 和 Metal 插件pip在 Mac Mini 2020 M1 上 pip3 install tensorflow macos tensorflow metal pip3 uninstall nump
  • 如何限制 while 循环中的项目

    这是我的项目中的 while 循环 div class index a href img width 200 height 171 alt src a div
  • jQuery 多次点击事件

    我被迫使用从外部服务器加载的脚本 该脚本基本上添加了一个元素 div class myClass 并绑定一个click的方法 事情是 在click与元素关联的函数 它们有一个return false声明在最后 我也有自己的脚本 我正在尝试添
  • 如何在 OSX 上卸载 pip?

    我运行了以下命令 easy install pip sudo pip install setuptools no use wheel upgrade 如何反转这两个命令以使我的 python 在 OSX 中恢复到其原始状态 删除 pip 作
  • R Shiny:数据表行的鼠标悬停文本

    有没有办法在将鼠标悬停在数据表显示中的行 记录 上时显示鼠标悬停文本 在 StackOverflow 上解决了一些类似的问题后 我发现了 2 个示例代码 一个显示列单元格的悬停文本 另一个在鼠标悬停时突出显示整行 显示列单元格悬停文本的示例
  • 示例 XSD 失败并显示“错误:未找到元素 X 的声明”

    尽管我是 xml 解析领域的新手 但我能够xsd创建有效的c 并成功编译和链接 但编译器优化 了实例化 所以 从第一步开始 我尝试你好世界CodeSynthesis 中的 xml 示例 http www codesynthesis com
  • 如何查看有关 Firebase JavaScript 客户端正在执行的操作的更多详细信息?

    我想更深入地了解 Firebase JavaScript 客户端库正在做什么 我正在使用 Firebase 开发一个 JavaScript 应用程序 该应用程序必须处理很多复杂性 例如 它必须处理网络中断和间歇性高延迟期 客户端库正在处理这
  • 如何在 Python 上使用 PuLP GLPK 为混合整数线性规划 (MILP) 的决策变量编写 IF 条件?

    我正在尝试使用 PuLP 上的混合整数线性规划和 Python 上的 GLPK 求解器来解决优化问题 到目前为止 我已经成功解决了带有约束的基本优化问题 例如 prob LpProblem MILP LpMinimize x1 LpVari
  • PHP 对象运算符优先级 (->)

    我写了一些代码 class a public b f gt c a new a b b echo a gt b f 当我使用 cli 时 它输出 c 但是当我使用 apache http 服务器时 抛出错误Illegal string of
  • 无需 JavaScript 即可模拟 bootstrap side popover

    我有一个仅支持现代浏览器的网站 我喜欢 bootstrap popover 的美感 但真的不喜欢它如何依赖 jquery 小部件和 javascript 来定位箭头 我理解为什么它曾经是必要的 但现在确实不应该了 我想看看我是否能得到类似的