图像上缩进的透明箭头/三角形

2023-11-24

我想做一个图像上的透明箭头。该三角形应在半透明块中缩进并显示背景图像。

期望的输出:

transparent indented CSS triangle

.barShow {
  background-color: #000;
  opacity: 0.5;
}

.barShow:before {
  top: 0%;
  left: 50%;
  border: solid transparent;
  content: " ";
  height: 0;
  width: 0;
  position: absolute;
  pointer-events: none;
  border-top-color: #999;
  border-width: 20px;
  margin-left: -20px;
}
<div class="barShow"></div>

The 透明 CSS 箭头应是透明无色的。


有几种方法可以制作透明箭头在图像上CSS。我将描述的两个涉及伪元素以最小化标记并具有相同的输出。您还可以在本答案的末尾看到 SVG 方法:

Transparent arrow over an image

箭头周围黑色部分的透明效果是用rgba() colors允许透明度。但如果您愿意,可以在伪元素上使用不透明度。


1.SkewX()

您可以使用CSS3 skewX()两个伪元素上的属性来制作透明箭头。这种方法的主要优点是透明箭头可以反应灵敏但它也允许您在黑色形状和三角形周围添加边框。

形状的响应能力是由padding-bottom属性来保持其纵横比(该技术被描述为here).

DEMO

.wrap {
  position: relative;
  overflow: hidden;
  width: 70%;
  margin: 0 auto;
}
.wrap img {
  width: 100%;
  height: auto;
  display: block;
}
.arrow {
  position: absolute;
  bottom: 0;
  width: 100%;
  padding-bottom: 3%;
  background-color: rgba(0, 0, 0, 0.8);
}
.arrow:before,
.arrow:after {
  content: '';
  position: absolute;
  bottom: 100%;
  width: 50%;
  padding-bottom: inherit;
  background-color: inherit;
}
.arrow:before {
  right: 50%;
  -ms-transform-origin: 100% 100%;
  -webkit-transform-origin: 100% 100%;
  transform-origin: 100% 100%;
  -ms-transform: skewX(45deg);
  -webkit-transform: skewX(45deg);
  transform: skewX(45deg);
}
.arrow:after {
  left: 50%;
  -ms-transform-origin: 0 100%;
  -webkit-transform-origin: 0 100%;
  transform-origin: 0 100%;
  -ms-transform: skewX(-45deg);
  -webkit-transform: skewX(-45deg);
  transform: skewX(-45deg);
}
<div class="wrap">
  <img src="https://farm8.staticflickr.com/7187/6895047173_d4b1a0d798.jpg" />
  <div class="arrow"></div>
</div>

浏览器支持transform : skew()属性是IE9+(参见canIuse).

2. 边界

这项技术的优点是浏览器支持,所以如果您需要 IE8 支持,那么这个技术就适合您。缺点是形状无法响应,因为边框无法使用%宽度。

DEMO

.wrap {
  position: relative;
  overflow: hidden;
  width: 70%;
  margin: 0 auto;
}
.wrap img {
  width: 100%;
  height: auto;
  display: block;
}
.arrow {
  position: absolute;
  bottom: 0;
  width: 100%;
  height: 20px;
  background-color: rgba(0, 0, 0, 0.8);
}
.arrow:before,
.arrow:after {
  content: '';
  position: absolute;
  bottom: 100%;
  width: 50%;
  box-sizing: border-box;
}
.arrow:before {
  right: 50%;
  border-bottom: 20px solid rgba(0, 0, 0, 0.8);
  border-right: 20px solid transparent;
}
.arrow:after {
  left: 50%;
  border-bottom: 20px solid rgba(0, 0, 0, 0.8);
  border-left: 20px solid transparent;
}
<div class="wrap">
  <img src="https://farm8.staticflickr.com/7187/6895047173_d4b1a0d798.jpg" />
  <div class="arrow"></div>
</div>

3. 玩吧!

示例:如果您可以将黑色透明颜色更改为与背景颜色相同(此处为白色),则可以制作一个与块具有相同背景图像的透明三角形/箭头:

transparetn arrow with a see through image

DEMO

.wrap {
    position: relative;
    overflow: hidden;
    width: 50%;
    margin: 0 auto;
    background-color:#fff;
}
.wrap img {
    width: 100%;
    height: auto;
    display: block;
}
.wrap:before, .wrap:after {
    content:'';
    position: absolute;
    bottom: 0;
    width: 50%;
    background-color: inherit;
    padding-bottom:3%;
}
.wrap:before {
    right: 50%;
    -ms-transform-origin: 100% 100%;
    -webkit-transform-origin: 100% 100%;
    transform-origin: 100% 100%;
    -ms-transform: skewX(45deg);
    -webkit-transform: skewX(45deg);
    transform: skewX(45deg);
}
.wrap:after {
    left: 50%;
    -ms-transform-origin: 0 100%;
    -webkit-transform-origin: 0 100%;
    transform-origin: 0 100%;
    -ms-transform: skewX(-45deg);
    -webkit-transform: skewX(-45deg);
    transform: skewX(-45deg);
}
<div class="wrap">
    <img src="https://farm8.staticflickr.com/7187/6895047173_d4b1a0d798.jpg" />
</div>

4. 图像上带有三角形的工具提示。

如果你需要使用这个形状在另一张图片上、背景渐变或任何非纯色,您将需要使用不同的方法才能看到形状周围的图像,如下所示:

tooltip like element with a triangle over an image

要点是使用同一张图像两次。一次在 div 元素中,一次在三角形中,并通过绝对定位将它们精确地放置在同一位置。箭头是用做的transform:rotate();.

DEMO

body{
  padding-top:100px;
  background:url('https://farm8.staticflickr.com/7187/6895047173_d4b1a0d798.jpg')no-repeat center center;
  background-size:cover;
}

.wrap, .img {
  display:inline-block;
  position:relative;
}
.tr{
  position:absolute;
  overflow:hidden;
  top:-25px; left:100px;
  width:50px; height:50px;
  -webkit-transform:rotate(45deg);
  -ms-transform:rotate(45deg);
  transform:rotate(45deg);
}
.tr img{
  position:absolute;
  top:-15px; left:-100px;
  -webkit-transform-origin: 125px 40px;
  -ms-transform-origin: 125px 40px;
  transform-origin: 125px 40px;
  -webkit-transform:rotate(-45deg);
  -ms-transform:rotate(-45deg);
  transform:rotate(-45deg);
}
.img{
  overflow:hidden;
  width: 600px; height:100px;
}
.img img{
  position:absolute;
  top:-40px;
}
<div class="wrap">
    <div class="img">
        <img src="https://farm7.staticflickr.com/6092/6227418584_d5883b0948.jpg" alt="" />
    </div>
     <div class="tr">
        <img src="https://farm7.staticflickr.com/6092/6227418584_d5883b0948.jpg" alt="" />
    </div>
</div>

DEMO带有盒子阴影。

5.SVG和cliPath

DEMO使用 svg 标签和 ClipPath。
如果您正在制作图形,这可能是语义上更好的方法。

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

图像上缩进的透明箭头/三角形 的相关文章

  • CSS 字体不起作用

    我正在尝试向我的网站添加自定义字体 我尝试了很多事情但没有成功 这是我的CSS代码 font face font family myFirstFont src url ellis ttf body margin 0 padding 0 wi
  • Chrome扩展程序自定义光标

    我构建了一个 Google Chrome 扩展程序 在网站中放置一些 IMG 标签 hover 上的此 img 标记必须显示自定义光标 该扩展使用 jQuery 作为其注入的核心脚本 我尝试了以下方法 1 var cursor url ch
  • 在 jQuery Mobile 中设置 Listview
  • 高度
  • 我正在尝试调整大小 li 在我的 jQuery 移动网站 listview 中 似乎无法在 CSS 中找到合适的类来执行此操作 我基本上调整了一些元素的大小 页眉和页脚等 我有五个 li li 按钮垂直堆叠 按钮和页脚下方有间隙 我只想设置
  • 使用 CSS 显示 div 内容后淡出

    我正在尝试在单击按钮时显示通知 单击按钮实际上会检查电子邮件验证 我知道要显示一个包含错误消息内容的 div 但是 我想淡出错误消息 比如说 5 秒后 我想用CSS来实现它 以下是我的尝试 它只是隐藏了一切 signup response
  • 父元素的 mousedown 事件中的 offsetX 和 offsetY 错误

    我在 mousedown 上获取 offsetX 时遇到问题 下面是我的代码 div Click the text The mouseDown function is triggered when the mouse button is p
  • 角 2 材料容器固定不工作

    我对 CSS 和 Angular 2 材质有疑问 任何固定定位元素的行为都不像固定在 md sidenav container 内 如果它不在容器内 则它可以正常工作 这是该问题的链接 只需将 md toolbar 复制并粘贴到容器内部 您
  • 如何为带有标题图像的移动设备设置 HTML,该图像占据浏览器的整个宽度?

    我担心的是我必须为移动设备建立一个网站 概念中是将图像设置为标题 现在的问题是 不同的智能手机具有不同的显示分辨率 有例如840x560 480x320 或 800x480 我必须编写什么元标签 CSS 等才能使 每个 现代智能手机中的图像
  • 如何在标签中制作文字自动换行

    我想在其中添加文字 a 标签适合固定的 div 但它会破坏 div 并且显示得很丑 CSS3 有一个属性 word wrap break word 看看MDN 自动换行文档 https developer mozilla org en CS
  • 如何让 Twitter Bootstraps 移动导航栏覆盖页面上的内容而不是将其向下推?

    我正在使用 Twitter Bootstrap 并且想修改移动导航栏 以便在展开时下拉菜单覆盖页面上的内容 而不是将其向下推 我知道我可能需要制作包含 div 绝对定位 增加它的 z index 并定位外部 div 相对而言 但我似乎无法让
  • Javascript显示/隐藏div onclick

    我有一个页面 其中包含三个 div 每个 div 是一个段落 我想使用 javascript 在用户从导航栏中按下每个 div 时仅在页面中显示这是导航栏 https i stack imgur com 1LnsS png WebDev 只
  • 平板电脑在第一次单击时悬停,在第二次单击时单击

    发布这个问题主要是希望证实我对该行为的怀疑 从而为其他程序员记录下来 因为我在网上没有找到任何记录 我正在构建一个网站 其导航栏具有以下属性 水平截面是 ul of li 和一些 li li s 两者都有 A n a 元素带您进入该主题 触
  • 是否可以使用 Chrome 开发者工具审核多个页面?

    我试图找出我的网站中未使用的 CSS 类 然后我发现 Chrome 开发者工具中有一个审核功能 可以标记未使用的 CSS 类 但是 它一次只能执行一页 有没有办法让它审核多个页面 以便我可以找出所有页面中未使用的 CSS 类 我知道有一个
  • 使用 JQuery 将 SVG 动态加载到 SVGWeb 中

    我正在尝试动态显示一些 SVG 内容 此内容作为字符串存储在我的数据源中 示例字符串如下所示
  • IE8/9 - CSS 文件的最大字节数

    我目前正在开发的应用程序有过多的 CSS 样式 我们似乎已经达到了 IE8 9 以及它可以加载的 CSS 数量的某种限制 在某些时候 它会停止解释 CSS 从而破坏某些页面上的样式 我们正在使用 Combres 来压缩 缩小导致 CSS 文
  • 是否可以将 SVG 对象的自定义属性设置为数字而不是字符串?

    我正在为 SVG G 元素 SVG 组对象 分配人工属性 我通过 SVG 转换移动该组及其内容 并将该组的 x y 坐标及其宽度 高度存储在这些属性中 我正在使用 D3 Javascript 库和调用 embeddedElemContain
  • 有没有一种方法可以使页面布局在 100% 缩放下完美契合,同时又尊重更大的缩放系数?

    有多种方法可以布局网页 使其适合浏览器视口 DOMwindow 当我说 适合 时 我包括更改所用字体的大小 更改 DIV IMG 和其他渲染元素的宽度和高度 以及允许元素 流畅 移动 目标是使页面在所有显示设备 从小型手机到大桌面屏幕 上看
  • 输入元素可滚动并启用文本溢出省略号

    当我添加text overflow ellipsis对于输入元素 该元素是可滚动的 当我将光标放在元素上时 我可以左右滚动 就好像文本是全宽并且没有被截断一样 尽管后面没有文本 我该如何阻止这种行为 input width 180px te
  • 如何使网站适应用户的屏幕分辨率?

    我正在使用 1024x768 屏幕分辨率来设计我的网站 当您从屏幕分辨率较小 较大的计算机上的浏览器中查看网站时 网站开始变形 无论用户的屏幕分辨率是什么 如何使网站适应用户的屏幕分辨率 我相信通过 JavaScript 或 CSS 是可能
  • Chrome 上的 contenteditable 中未显示编辑光标

    当您打开此页面时 请参阅现场演示 http jsfiddle net gs3p1a6r 3 show 与 Chrome span span CSS myspan border 0 outline 0 JS myspan focus the
  • CSS交付优化:如何推迟CSS加载?

    我在尝试着优化 CSS 交付遵循针对开发人员的谷歌文档https developers google com speed docs insights OptimizeCSSDelivery example https developers

随机推荐

  • tidyverse hub_longer 几组列,但避免中间的 mutate_wider 步骤 [重复]

    这个问题在这里已经有答案了 我有以下数据 dat lt data frame id c A B C Q1r1 pepsi c 1 0 1 Q1r1 cola c 0 0 1 Q1r2 pepsi c 1 1 1 Q1r2 cola c 0
  • 为什么在 Python 中使用 numpy 进行矩阵乘法比使用 ctypes 更快?

    我试图找出进行矩阵乘法的最快方法 并尝试了 3 种不同的方法 纯Python实现 这并不奇怪 Numpy 实现使用numpy dot a b 使用 C 接口ctypesPython 中的模块 这是转换为共享库的 C 代码 include
  • IPython:如何在不同的单元格中显示相同的图?

    总的来说 我对 IPython Notebooks Jupyter 和 Python 还很陌生 我使用以下代码在 Jupyter 笔记本中创建散点图 import numpy as np import matplotlib pyplot a
  • 模板专业化,其中模板化类型也是模板

    我创建了一个用于字符串转换的小实用函数 这样我就不必到处创建 ostringstream 对象 template
  • Linq 函数,如 .Net string.CompareOrdinal

    我需要使用比较字符串string CompareOrdinal 在 linq 查询中 string max string min var res db Table Where c gt string CompareOrdinal c Id
  • TempData 实施变更 - 变更原因

    在 ASP NET MVC 2 中 条目的生命周期TempDataDictionary只是一个 HTTP 请求 这转化为在一个请求中设置一个值 重定向 并在线路的另一端访问相同的项目 此后 无论您是否在该行的末尾从字典中读取该值 该条目都将
  • Emacs:.emacs 中延迟加载模式的最佳实践?

    遇到相关文件扩展名时 是否有关于延迟加载模式的最佳实践 此时我已经安装了大约 25 种不同的 Emacs 模式 并且启动变得很慢 例如 虽然准备好 clojure 模式很好 但我很少使用它 并且我想完全避免加载它 除非我打开扩展名为 clj
  • 在 jsx 和 map 中对 if 语句做出反应

    我有工作代码 地图函数中的 if 语句没有什么问题 这里是代码 const SortableItem SortableElement CashItem const SortableList SortableContainer items g
  • NSSearchPathForDirectoriesInDomains 返回错误的目录

    我在用着NSSearchPathForDirectoriesInDomains NSDocumentDirectory NSUserDomainMask YES 获取我的应用程序中的应用程序文档目录 但返回的数组仅包含一个对象 并且它是一个
  • Android - 使用 Timer 和 TimerTask 控制任务?

    我目前正在尝试在 Android 应用程序中设置 WiFi 扫描 每 30 秒扫描一次 WiFi 接入点 我已使用 Timer 和 TimerTask 使扫描按照我需要的时间间隔正确运行 但是 我希望能够在用户按下按钮时停止和开始扫描 而我
  • JQuery 鼠标悬停图像叠加

    只是想知道如何才能 100 正确地工作 我想我已经快到了 基本上 我有一个图像 当我将鼠标悬停时 我希望在顶部出现一个覆盖层 这是一个彩色 div 我有这个半工作fiddle img src http mirrorchecker com i
  • HTML 页面中的抗锯齿字体

    有没有一种好方法可以在网页中创建清晰 清晰的大字体 我需要在我的主页上创建具有不同字体大小和颜色的标签云效果 我已经在 HTML CSS 中设置了它 但在较旧的浏览器或操作系统上默认不支持抗锯齿 它看起来有点 蹩脚 我玩过sIFR 它工作得
  • 如何沿圆移动点?

    我想通过使用圆半径和移动角度来以圆周运动移动精灵 例如 我知道精灵正在以半径 10 的圆内移动 当前位置为 387 38 角度为 28 度 现在我不想将它沿圆周移动 100px p1 x y coordinate known 387 38
  • 升级到 Material UI 4 - withStyles 后出现错误

    从 v3 9 x 升级到 MUI v4 0 2 后 我收到以下错误 您必须将组件传递给 connect 返回的函数 相反收到了 propTypes displayName WithStyles MyComponent options def
  • 使用 DirectX 的桌面捕获不起作用

    由于D3DPOOL SCRATCH处理速度较慢 所以我编写了桌面捕获程序以参考网上的报告 然而 结果却是一片漆黑的画面 这是控制台程序的结果还是有其他原因 include
  • OSX 10.9 上的 Pstack 进程

    在linux上为了查看给定时间的进程堆栈我们一般使用 堆栈pid gt 我想知道 osx 中的相同内容是什么 thanks sudo usr libexec stackshot i u p
  • 从 Java 文本文件中读取特定行

    有没有什么方法可以从文本文件中读取特定行 在 API 或 Apache Commons 中 就像是 String readLine File file int lineNumber 我同意它的实现很简单 但它的效率不是很高 特别是如果文件很
  • 在 lapply/ldply 的列表中使用对象名称

    在试图回答时一个问题早些时候 我遇到了一个看起来应该很简单的问题 但我无法弄清楚 如果我有一个数据框列表 df1 lt data frame a 1 3 x rnorm 3 df2 lt data frame a 1 3 x rnorm 3
  • Span 文本更改上的 MutationObserver 不会触发

    这只是一个简单的例子 而不是实际情况 MutationObserver 仍然没有触发 所以我对其工作原理的假设是错误的 JSFiddle function var editButtonVisibility function console
  • 图像上缩进的透明箭头/三角形

    我想做一个图像上的透明箭头 该三角形应在半透明块中缩进并显示背景图像 期望的输出 barShow background color 000 opacity 0 5 barShow before top 0 left 50 border so