通过切口边框设计,我们可以向用户展示可以在HTML元素的边框区域下找到的内容 。 通常通过将两个或两个以上 大小不同的 块元素 (在大多数情况下为div) 堆叠在一起来解决此任务。 首先,这似乎是一种轻松的解决方案,但是当您要多次重用布局,在元素周围移动,优化移动设计或维护代码时,它会变得更加令人沮丧。

在本文中,我将向您展示一个优雅的纯CSS解决方案,该解决方案使用一个HTML元素即可达到相同的效果。 此技术对于可访问性也非常有用,因为它将背景图片加载到CSS中 ,与HTML分开。

在这篇文章的结尾,您将知道如何在边框区域显示背景图像,以创建可以在下面看到的剪裁边框设计 。 我还将展示如何使用视口单元使设计具有响应能力。

初始码

HTML前面的唯一要求是一个block元素

<div class="cb"></div>

我们需要重用 div的尺寸(宽度和高度)和边框宽度值,因此我将它们作为CSS变量引入。 变量--w表示的宽度 .cb块元素, --h表明它的高度--b无二的边框宽度 ,并--b2的宽度乘以2,我们将在后面看到使用边界最后一个变量。

我正在相对于视口的宽度调整<div>大小,因此使用了vw单位(如果需要,可以使用固定单位)。

.cb {--w: 35vw;--h: 40vw;--b: 4vw;--b2: calc(var(--b) * 2);
}
快速的解释-

所述单元vw表示1/100视口的宽度的 。 例如, 50vw垂直切成100等份的视口宽度的50份,而50vh水平切成100等份的视口高度的50

让我们通过添加背景并使用预定义CSS变量设置边框,高度和宽度改进上述代码。

.cb {--w: 35vw;--h: 40vw;--b: 4vw;--b2: calc(var(--b) * 2);background: url(bg.jpg);border: var(--b) solid transparent;height: var(--h);width: var(--w);
}

演示现在应该是这样的:

调整背景图片的大小

我们需要背景图像覆盖<div>的整个区域,包括边界区域 ,因此需要相应调整背景图像的大小

如果要给背景图像提供固定的大小,只需确保您提供的大小使它也能覆盖<div>的边框区域。 至于到目前为止所使用的代码,这是我给它的background值:

.cb {--w: 35vw;--h: 40vw;--b: 4vw;--b2: calc(var(--b) * 2);background: url(bg.jpg) center/calc(var(--w) + var(--b2))calc(var(--h) + var(--b2));border: var(--b) solid transparent;height: var(--h);width: var(--w);
}

同样, 背景图片高度 [ calc(var(--h) + var(--b2)) ]是div [ var(--h) ]的高度与顶部和顶部宽度之和。底边框 [ var(--b2) ]。

这样,我们将背景图像的大小调整为与div大小相同的区域(包括边界区域)

这就是我们现在所拥有的:

覆盖边界专属区域

现在,我们已经用背景图像覆盖了包含边界的区域,剩下的就是用纯色覆盖边界内部的中心区域 (不含边界的区域),为此我们得到了box-shadow插图

.cb {--w: 35vw;--h: 40vw;--b: 4vw;--b2: calc(var(--b) * 2);background: url(bg.jpg) center/calc(var(--w) + var(--b2))calc(var(--h) + var(--b2));border: var(--b) solid transparent;box-shadow: inset var(--w) 0 0 rgba(0,120,237,.5);height: var(--h);width: var(--w);
}

值为var(--w)的水平阴影覆盖div的整个宽度 。 使用rgba颜色功能可以在混合中添加一些透明度 ,但是如果您想完全覆盖中心区域,也可以使用不透明的颜色。

使用

在Codepen演示中,您可以在图像周围看到白色边框。 使用框阴影创建多个边框有一个著名的技巧-我们可以使用相同的技术在设计中添加一个或多个纯色边框

更新的box-shadow值是:

.cb {
--w: 35vw;
--h: 40vw;
--b: 4vw;
--b2: calc(var(--b) * 2);
background: url(bg.jpg) center/calc(var(--w) + var(--b2))calc(var(--h) + var(--b2));
border: var(--b) solid transparent;
box-shadow: inset var(--w) 0 0 rgba(0,120,237,.5),0 0 0 calc(var(--b) / 2) white;
height: var(--h);
width: var(--w);
}

可选:单独的布局和美观

在我的最终Codepen演示中,我将背景图像和框阴影颜色的代码放置在单独的类中 。 这是可选的 ,但是如果要在多个元素中重复使用剪切边框设计的布局 ,并分别为每个元素添加美观效果(背景图像+颜色),则该功能非常有用。

我向<div>添加了一个名为.poster1的类以实现此目标。

.poster1 {--tbgc: rgba(0,120,237,.5);background-image: url("http://bit.ly/2eQBij2");
}

由于background是速记属性, 因此可以单独覆盖/设置其速记属性。 因此,我们可以在.poster1设置background-image ,并从.cbbackground属性中删除url值。

要设置box-shadow的值,我们可以使用另一个CSS变量--tbgc变量保存我们要赋予框阴影的颜色值 (演示中的.cb ),因此在.cb的样式规则中,我们var(--tbgc)替换了box-shadow属性的颜色值var(--tbgc)

.cb {--w: 35vw;--h: 40vw;--b: 4vw;--b2: calc(var(--b) * 2);background: center/calc(var(--w) + var(--b2))calc(var(--h) + var(--b2));border: var(--b) solid transparent;box-shadow: inset var(--w) 0 0 var(--tbgc),0 0 0 calc(var(--b) / 2) white;height: var(--h);width: var(--w);
}

纵向模式代码

由于尺寸全部以vw为单位,因此当您以纵向模式查看设计时,它看起来太小 (宽度相对于高度较小),默认情况下所有移动设备都处于该状态。 要解决此问题,请使用vh切换vw ,并根据您认为适合纵向模式的方式调整设计大小

@media (orientation: portrait) {.cb {--w: 35vh;--h: 40vh;--b: 4vh;}
}

翻译自: https://www.hongkiat.com/blog/css-cutout-border/

css文字加边框镂空文字_如何使用CSS创建镂空边框设计相关推荐

  1. wps文档怎么给整段文字加框_WPS文字如何给段落添加双波浪边框

    您可能感兴趣的话题: WPS 核心提示:WPS文字如何给段落添加双波浪边框? 1.打开文字中的一篇原始文档,用你鼠标选中需要添加双波浪边框的段落,然后把鼠标切换到功能区的"开始"选 ...

  2. css 设置表格右边有图片_我写CSS常用的方法

    在这里想与你分享一个由各大CSS网站总结推荐的20个有用的规则和实践经验集合.有一些是面向CSS初学者的,有一些知识点是进阶型的.希望每个人通过这篇文章都能学到对自己有用的知识. 1.注意外边距折叠 ...

  3. wps文档怎么给整段文字加框_WPS文字技巧—如何为WPS文档增加页面特效边框

    在一些特殊的WPS文档排版中,我们常常需要为它增加一些特殊的设置,但是一些新手小伙伴却不知道怎么设置?下面我们就来给大家分享一个在WPS文字你不可不知的小秘密-如何为WPS文档增加页面特效边框,能够快 ...

  4. css布局属性与合成属性_如何使用CSS逻辑属性控制布局

    css布局属性与合成属性 CSS逻辑属性定义了一种处理布局的新方法. 他们的主要目标是帮助开发人员支持不同的书写系统,例如从右到左(RTL)和垂直显示的脚本. 这些新功能可以通过逻辑属性而不是物理属性 ...

  5. css使两个盒子并列_前端学习CSS

    一 CSS CSS是Cascading Style Sheets的缩写,层叠样式表,用来控制网页数据的显示,可以使网页的显示与数据内容分离. 二 引入方式 (1)行内式:在标记的style属性中设置C ...

  6. css animation动画完成后隐藏_如何使用CSS实现旋转地球动画效果

    旋转地球功能实现主要借助于CSS动画效果完成,通过移动地图背景图层,云彩图层等,在视觉上呈现出旋转地球效果.旋转地球最终实现效果如下图所示: 旋转地球效果展示 设计思路与核心技术 旋转地球效果实现主要 ...

  7. css div撑满窗口高度_如何使用CSS将div的高度设置为窗口的100%?

    css div撑满窗口高度 Introduction: 介绍: Hello there developers! Well, certainly if you are reading this arti ...

  8. 懒加载和预加载的区别_类的动态创建(ro,rw)amp; 懒加载类和非懒加载类底层加载的区别 amp; 类和分类的搭配分析...

    黑客技术点击右侧关注,了解黑客的世界! Java开发进阶点击右侧关注,掌握进阶之路! Python开发点击右侧关注,探讨技术话题!作者丨OSMin链接:https://juejin.im/post/5 ...

  9. css背景图替代文字 - 如何让css无法加载时页面功能依然不受影响

    方法一:利用text-indent将文字移出盒子,然后让换行文字不换行,这样,当css无法加载时,虽然背景图无法显示,但是文字也不会被移出盒子,这样文字显示在用户的视野里了 代码: <!DOCT ...

  10. CSS 实现加载动画之一-菊花旋转

    CSS 实现加载动画之一-菊花旋转 原文:CSS 实现加载动画之一-菊花旋转 最近打算整理几个动画样式,最常见的就是我们用到的加载动画.加载动画的效果处理的好,会给页面带来画龙点睛的作用,而使用户愿意 ...

最新文章

  1. Datawhale组队学习周报(第047周)
  2. Cisco常见路由器密码和版本恢复方法
  3. Android Framework常用工具及LOG调试方法
  4. [分享]Host文件的原理解释及应用说明
  5. 【SQLAlchemy】is not bound to a Session; attribute refresh operation cannot proceed
  6. 不能用了 重装系统git_怎么用光盘重装系统?
  7. MATLAB学习笔记(七)
  8. struts2 action 中autowired 不能注入
  9. perl oracle ppm,Perl图形化包管理工具PPM学习使用笔记
  10. 《张居正》—— 读后总结
  11. ansible 远程Windows主机
  12. linux交互式脚本编写,谢烟客---------Linux之bash脚本编程---用户交互
  13. 目前最赚钱快的微信营销几种玩法和模式
  14. 不藏了,我的一千行 MySQL 学习笔记(2万字长文)
  15. 青岛大学计算机研究生实验室,实验室概况
  16. 大鱼吃小鱼游戏代码 基于java-swing
  17. 一次 applet 客户端打印 jasperreport 报表任务笔记
  18. 数字图像处理第九章----形态学图像处理
  19. stm32 mbed 入门教程(二)---点亮第一盏小灯
  20. docker资源分配 Cgroup和安全通信 TLS

热门文章

  1. 创业公司必备,20个提升团队工作效率的工具神器
  2. 如何用计算机做牛顿迭代公式,牛顿迭代法
  3. 将Excel数据批量生成条形码
  4. 应用安全设计规范--模板
  5. 图片像素低,图片模糊怎么变清晰?
  6. 如何将手机里的小视频做成GIF动图?一键轻松生成GIF动画
  7. vooc充电原理_OPPO手机充电技术——VOOC技术原理
  8. python图灵机器人接口_apikey创建接入图灵机器人
  9. 2022-2027年中国新能源车电控电机市场竞争态势及行业投资前景预测报告
  10. 动态IP和静态IP有什么区别?