变换比例导致间隙/线条

2024-03-24

我目前正在构建一个网站,但遇到了问题transform: scale。我有一个按钮,当用户将鼠标悬停在它上面时,会发生两件事:

  1. 背景沿对角线“扫过”
  2. 按钮标签颜色改变
  3. 按钮稍微变大

我已经完成了这个工作,看起来非常好,但是在实施之后3,当按钮变大时,我看到左侧有一个奇怪的间隙。

这是我的代码:点击查看演示 http://jsbin.com/nuyegazila/edit?html,css,output

HTML

<a href="#" class="button">Hover</a>

CSS

body {
    text-align: center;
    padding-top: 10%;
}

.button {
    display: inline-block;
    text-transform: uppercase;
    font-size: 1.1em;
    font-weight: 600;
    background: transparent;
    transition: all ease .25s;
    border: 3px solid green;
    color: green;
    position: relative;
    overflow: hidden;
    z-index: 2;
    font-family: sans-serif;
    padding: 20px 35px;
    text-decoration: none;
}

.button:before {
    content: ' ';
    transition: all ease-out .25s;
    width: 200%;
    height: 100%;
    position: absolute;
    top: 0;
    left: 0;
    transform-origin: 0 0;
    z-index: -1;
    transform: skewX(-45deg) translateX(-100%);
    background: green;
}

.button:hover:before {
    transform: translateX(0);
}

.button:hover {
  color: white;
  transform: scale(1.1);
}

这是我看到的差距的屏幕截图。这个问题出现在 Chrome 和 Safari 中(我没有测试 Firefox 或 IE,因为我在工作中无法下载它们)。

奇怪的缝隙截图 https://i.stack.imgur.com/tebev.png


它“只”出现在 Chrome 中,而不出现在 Firefox 中(编辑:Edge 中更糟:首先它在左侧,然后在底部......)。不确定舍入错误或其他原因是否是造成该差距的原因,但我发现替换border by a box-shadow改善渲染效果。
在过渡结束时仍然可以看到一个间隙,但最终消失了,所以我在上面添加了 2 个盒子阴影:hover:新的插入并填补了之间的空白“边框/框阴影” and 内容框 faster.

代码笔:http://codepen.io/PhilippeVay/pen/oYjZzK?editors=0100 http://codepen.io/PhilippeVay/pen/oYjZzK?editors=0100

body {
    text-align: center;
    padding-top: 10%;
}

.button {
    display: inline-block;
    text-transform: uppercase;
    font-size: 1.1em;
    font-weight: 600;
    background: transparent;
    transition: all ease .25s;
    box-shadow: 0 0 0 3px green; /* replaces border which caused a gap in Chr, not Fx */
    color: green;
    position: relative;
    overflow: hidden;
    z-index: 2;
    font-family: sans-serif;
    padding: 19px 34px;
    text-decoration: none;
}

.button:before {
    content: ' ';
    transition: transform ease-out .25s;
    width: 200%;
    height: 100%;
    position: absolute;
    top: 0;
    left: 0;
    transform-origin: 0 0;
    z-index: -1;
    transform: skewX(-45deg) translateX(-100%);
    background: green;
}

.button:hover:before {
    transform: translateX(0);
}

.button:hover {
  color: white;
  box-shadow: 0 0 0 3px green, inset 0 0 0 1px green; /* improves end of transition in Chrome */
  transform: scale(1.1);
}
<a href="#" class="button">Hover</a>

编辑:玩转的大小:pseudo

.button:before {
  content: ' ';
  transition: all ease-out .25s;
  width: calc(200% + 6px);
  height: calc(100% + 6px);
  position: absolute;
  top: -3px;
  left: -3px;
  transform-origin: 0 3px;
  z-index: -1;
  transform: skewX(-45deg) translateX(-100%);
  background: green;
}

考虑到边界,但这不会改变任何事情,因为overflow: hidden.

所以这是我的第三次尝试:通过添加一个容器(或将 A 元素作为容器)并将边框保留在子元素上,它使该间隙消失(溢出在边框周围)。

代码笔:http://codepen.io/PhilippeVay/pen/ZBbKWd http://codepen.io/PhilippeVay/pen/ZBbKWd

body {
    text-align: center;
    padding-top: 10%;
}
a {
  display: inline-block;
  overflow: hidden;
    background: transparent;
    transition: all ease .25s;
    color: green;
    position: relative;
    z-index: 2;
    font-family: sans-serif;
    text-decoration: none;
}
a > span {
    display: inline-block;
    text-transform: uppercase;
    font-size: 1.1em;
    font-weight: 600;
    border: 3px solid green;
    padding: 20px 35px;
}

a:before {
    content: ' ';
    transition: all ease-out .25s;
    width: 200%;
    height: 100%;
    position: absolute;
    top: 0;
    left: 0;
    transform-origin: 0 0;
    z-index: -1;
    transform: skewX(-45deg) translateX(-100%);
    background: green;
}

a:hover:before {
    transform: translateX(0);
}

a:hover {
  color: white;
  transform: scale(1.1);
}
<a href="#" class="button"><span class="bd">Hover</span></a>

Fx 完美地过渡到最后......并通过在右侧添加 2px 来“纠正”宽度。但它已经在你的 jsbin 中可见,所以这是另一个故事(而且我猜用户会点击然后不那么烦人)

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

变换比例导致间隙/线条 的相关文章

  • 为什么我的图像下方有空间? [复制]

    这个问题在这里已经有答案了 图像在下面获得了神秘的空白空间 即使padding 0 margin 0被应用 示范 http jsfiddle net cLETP 红色边框应该包围图像 但底部有空间 造成这种情况的原因是什么 如何删除该空间
  • 理解 z-index:该元素如何出现在其父级同级元素的前面?

    为什么当我删除时红色 div 位于绿色 div 前面z index from wrapperRed 感觉像z index是沿着链条向上继承的 如果我改变z index将绿色 div 更改为 6 即使删除第一句中描述的行后 它仍保留在红色 d
  • save_and_open_page 已停止提供我的 CSS

    我的测试设置工作得很好 每当我打电话时 都能提供正确格式的 css 页面save and open page从测试中 然后 我设置了一些 javascript 测试 并对我的设置进行了一些更改 抱歉 我无法详细说明所有内容 我没有足够详细地
  • 将鼠标悬停在原点时会触发translateY()

    当您将光标移动到按钮底部时 是否可以无限期地不触发动画 它看起来是这样的 gif https i stack imgur com QwdHW gif and codepen https codepen io jaeyson pen GwwJ
  • Sass:@use 出错,未定义变量

    我正在使用 Sass 并且想要使用 use关键字而不是 import 因为 import有很多问题 另外只有dart sass支持这个功能 我将node sass改为dart sass 然而 问题出现了 我原来的代码 import carb
  • 导航栏下拉菜单(折叠)在 Bootstrap 5 中不起作用

    我在尝试使用以下命令创建响应式菜单或下拉按钮时遇到问题Bootstrap 5一切似乎都正常 导航图标和下拉图标出现 但它不起作用 当我单击nav图标或dropdown按钮 无dropdown menu apears 我想特别提到的是 我还包
  • 合并 2 个大型 CSS 文件的有效方法

    我正在寻找一个可以合并 2 个大型 CSS 文件的工具 到目前为止我尝试过的所有方法 例如CSSMerge 都没有成功 其中一些只是随机删除属性 其他人则因 webkit 和 moz 等非标准属性而窒息 并给我错误 我还需要保留每条规则大小
  • 为什么我的交互式图像仅在 Internet Explorer 上出现故障?

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

    我有以下示例 div style height 150px background color AAAAFF div
  • Webpack 4:如何使用 LESS 获取 CSS 源映射?

    多年来我一直在尝试让 CSS 源映射在 webpack 中工作 但没有成功 我不确定链条中哪里出了问题 我希望有人能指出我正确的方向 这是发生的事情 行号是错误的 实际上文件名也是错误的 main less只是包含一堆 import也就是说
  • jQuery 生成 div 和碰撞检测

    所以我的学校作业项目快要结束了 我只是错过了两件我似乎无法弄清楚的主要事情 1 如何生成具有随机位置的间隙的管道障碍物 以便鸟可以飞过 尝试使用一个函数来更改间隙位置的管道 div 的 css right attr 并在以下情况下移除管道它
  • React 设置背景颜色与状态 rgb

    所以我根据数据库的结果生成一个表 在数据库中我保留 rgb 值 例如 75 75 75 现在当我生成列表时 我想使用保存的值设置我的 td 的背景 tbody this state boxes map box i gt tr td box
  • 指南针字体输出错误的字体文件路径

    font face font family HelveticaNeueLTStd Lt src url css fonts HelveticaNeueLTStd Lt otf format opentype 这是我的指南针代码的输出 inc
  • 如何在不使用变换或顶部/左侧的情况下转换列表中项目的位置

    有一天我偶然发现一个例子 https codepen io itslit pen gvKrMY它使用 Vue js 但我的问题更多是关于 Vue 用于实现状态之间转换的 CSS 和 HTML 卡片暂时获得等级 shuffleMedium m
  • 将图像作为框架放置在 iframe 周围?

    我有一个网站尝试以移动格式显示 但在宽屏幕上 我确信 iframe 是正确的选择 我正在尝试将 iframe 加载到 iPhone 的图像中 你可以看一个例子here http webfro gs south tour iframe tes
  • 响应式图像 - srcset 和尺寸属性 - 如何正确使用两者:基于设备像素比和基于视口的选择一起?

    到目前为止 我经常读到这个问题 并且它也发生在我自己的项目中 这里介绍一下我到目前为止所发现的关于 srcset 和 size 属性的内容 关于如何使用有两种不同的可能性srcset 属性 来源 w3c http w3c github io
  • 最大宽度调整以适应文本?

    不是最好的标题 但无论如何 我有一个元素max width和一些文字 如果文本长度超过一行所能容纳的长度 我会得到以下结果 My text here hello everyone 换句话说 它占据了完整的最大宽度 但由于单词向下移动 右侧有
  • 如何选择具有“A”类但不具有“B”类的 div?

    我有一些 div div class A Target div div class A B NotMyTarget div div class A C NotMyTarget div div class A D NotMyTarget di
  • 在 HTML 下拉列表中有一个滚动条

    我正在寻找一种在 HTML 的下拉列表中添加滚动条的方法 这样如果下拉列表包含的内容超过例如 5 项 将出现滚动条以查看其余项 这是因为我将被迫列出一些大清单 过去几个小时我一直在谷歌上搜索它 但没有运气 它需要适用于 IE8 FF 和 C
  • 在 Nexus 7 2013 上更改方向时 CSS 媒体查询不起作用

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

随机推荐

  • 使用Camel的spring-rabbitmq组件时如何自动声明交换?

    我正在尝试从 Camel 3 x 迁移到 Camel 4 x 版本 因此我需要从rabbitmq替换组件spring rabbitmq With rabbitmq我正在使用的组件declare https camel apache org
  • 如何自动滚动到网格视图的末尾?

    当我将项目添加到网格视图的末尾时 我希望用户看到已添加的内容 这是我的意思的一个例子 用户通过按 图标添加项目 问题是在第 14 项之后没有任何反馈表明已添加任何项目 当最后一项添加到列表中时 如何自动滚动到最后一项 奖励点 当第 n 个项
  • 允许使用 docker-compose 在两个 docker 桥接网络之间进行通信

    我正在使用 docker compose 创建相当复杂的 docker 容器基础设施 这些容器在 4 个不同的网络中运行 类似于我模仿的生产环境 Docker Compose 为我创建了这四个网络 并且一切正常 因为容器不会尝试与不同网络内
  • 数据切换和数据目标在引导程序中不起作用

    我正在使用 bootstrap 开发导航栏 该导航栏上有两个按钮 一个用于登录 另一个用于注册 我希望当用户单击 登录 时 会弹出一个模式弹出窗口 并且当单击 注册 时 用户将被重定向到另一个页面 下面是我的代码 但在我看来它不起作用 我尝
  • 保护 REST API 和 Slim 框架的安全

    我对 REST API 相当陌生 我意识到已经发布了很多问题 然而 仔细阅读这些实际上让我对如何处理这个问题更加困惑 我使用创建了一个 REST API纤薄的框架 http www slimframework com 我只是用它来传输数据
  • Rails 5.x:如何在运行时添加路由而不覆盖原始路由表?

    假设我有一个控制器操作 应该会导致将新路由添加到路由表中 def make route vanity url params vanity url vanity redirect params vanity redirect return r
  • odbc 驱动程序不支持请求的属性

    当我们在最后一行运行程序时 odbc 驱动程序不支持请求的属性 错误出现 任何人都可以给我一个想法 Dim conn As New ADODB Connection Dim rsRec As ADODB Recordset Dim cmd
  • 如何在张量流中使用非常大(>2M)的词嵌入?

    我正在运行一个具有非常大的词嵌入 gt 2M 词 的模型 当我使用 tf embedding lookup 时 它需要一个很大的矩阵 当我运行时 我随后出现了 GPU 内存错误 如果我减小嵌入的大小 一切都会正常 有没有办法处理更大的嵌入
  • 如何在 Matlab 启动时设置一些自定义变量

    我想设置一些初始变量 例如format compact和当前目录 在 Matlab 每次启动时自动执行 我怎样才能做到这一点 创建一个startup m 脚本文件 其中包含用于设置所需状态的命令 接下来 从 MATLAB 内部运行命令 gt
  • 在 BigQuery python api 中设置聚类列

    我正在尝试在 BigQuery 中创建集群表 当我在 UI 中测试它时 它工作得很好 CREATE OR REPLACE TABLE project id xyz temp clustering PARTITION BY date CLUS
  • 使用具有应用程序权限的 Microsoft Graph API 时,租户没有 SPO 许可证

    当我们尝试访问 Microsoft Graph v1 0 API 中的 Sharepoint 终结点时 我们收到 400 错误 并显示消息 租户没有 SPO 许可证 我们已经注册了 Azure AD 应用程序并为相关端点分配了应用程序权限
  • 为什么函数返回 nil FireBase Swift [重复]

    这个问题在这里已经有答案了 为什么函数会返回 nil 我尝试添加 DispathQue 但我不明白它应该如何正确 请帮忙 func storagePutData uid String image UIImage compretition e
  • Spring 中的 Hibernate 事务管理器配置

    在我的项目中 我使用 Hibernate 进行编程事务划分 每次在我的服务方法中我都会写类似的东西 Session session HibernateUtil getSessionFactory openSession session be
  • 这样做的目的是什么(MyJobject as ILocalObject).GetObjectID

    在delphi Tokyo源代码中 我看到这两种不同的方式来检索 服务经理 var FLocationManager JLocationManager FLocationManager TJLocationManager Wrap TAnd
  • express-jwt 不尊重未受保护的路径

    有关express jwt模块的信息可以在这里找到 https github com auth0 express jwt https github com auth0 express jwt https www npmjs com pack
  • 让笑话在故事书中全球可用

    我在用 storybook react 6 in a create react app项目 我对所有商店 对象等进行了数千次测试和模拟 这些模拟利用jest fn 我想在我的故事书故事中重复使用这些模拟 但它说jest is not def
  • neo4j 使用选项卡加载 CSV

    我正在尝试使用以下命令加载 csv 并在 neo4j 2 1 0 中创建节点 使用定期提交 从 file c temp listings TXT 加载 CSV AS 行 FIELDTERMINATOR t CREATE p person i
  • mmap 与 fileinput 的优点

    我读到 mmap 比 fileinput 有优势 因为它会将页面读入内核页面缓存并在用户地址空间中共享该页面 而 fileinput 实际上将一个页面带入内核并将一行复制到用户地址空间 因此 文件输入会产生额外的空间开销 所以 我打算转向
  • 如何在 PostgreSQL 的函数内编写WITH(CTE)

    我正在尝试使用 WITH 它是 PostgreSQL 函数中的公共表表达式 以下是示例 Example Create or replace function withFunction returns void as Body Begin W
  • 变换比例导致间隙/线条

    我目前正在构建一个网站 但遇到了问题transform scale 我有一个按钮 当用户将鼠标悬停在它上面时 会发生两件事 背景沿对角线 扫过 按钮标签颜色改变 按钮稍微变大 我已经完成了这个工作 看起来非常好 但是在实施之后3 当按钮变大