css 转换不适用于 css 网格,元素定位问题

标签 css grid css-transforms css-grid

我正在尝试在我的网格元素上应用 CSS transform,所以在 :hover 上我在边界上得到了一个很好的过渡。

我做错了什么,很可能是元素和网格的定位导致它无法正常工作。

应用 transform scaleX 时,边框会消失并且不会在悬停时按预期显示。

.work {
	background: var(--white);
}
.work-wrapper {
	max-width: 1170px;
	padding: 1em;
	margin: auto;
	display: grid;
	grid-template-columns:repeat( auto-fill, minmax(260px, 1fr) );
	grid-row-gap: 30px;
	grid-column-gap: 15px;
	place-items: center start;
	background: #333;
}
.work-item {
	height:180px;
	width:260px;
	position: relative;
	background: var(--lilavo);
	margin: auto;
  box-shadow: 0 5px 10px 5px rgba(0, 0, 0, 0.4);
}
.item::before {
	content: '';
	position: absolute;
	top: 10px;
	left: 10px;
	right:10px;
	bottom: 10px;
	border-top: 1px solid var(--white);
	border-bottom: 1px solid var(--white);
	transition: 0.5s;
	-webkit-transform:scaleX(0);
    -moz-transform:scaleX(0);
    -ms-transform:scaleX(0);
    -o-transform:scaleX(0);
    transform:scaleX(0);
	opacity: 0;
}
.item::before:hover {
	-webkit-transform:scaleX(1);
    -moz-transform:scaleX(1);
    -ms-transform:scaleX(1);
    -o-transform:scaleX(1);
    transform:scaleX(1);
		opacity: 1;
}
<section id="work" class="work">
      <h2>Work</h2>
      <div class="work-wrapper">
        <div class="work-item">
          <div class="item item-one"></div>
        </div>
        <div class="work-item">
          <div class="item item-one"></div>
        </div>
        <div class="work-item">
          <div class="item item-one"></div>
        </div>
        <div class="work-item">
          <div class="item item-one"></div>
        </div>
        <div class="work-item">
          <div class="item item-one"></div>
        </div>
        <div class="work-item">
          <div class="item item-one"></div>
        </div>
      </div>
    </section>

最佳答案

使用 .item.work-item:hover > .item 选择器代替 .item::before。 item::before:hover 分别。它会起作用! :)

.work {
	background: var(--white);
}
.work-wrapper {
	max-width: 1170px;
	padding: 1em;
	margin: auto;
	display: grid;
	grid-template-columns:repeat( auto-fill, minmax(260px, 1fr) );
	grid-row-gap: 30px;
	grid-column-gap: 15px;
	place-items: center start;
	background: #333;
}
.work-item {
	height:180px;
	width:260px;
	position: relative;
	background: var(--lilavo);
	margin: auto;
  box-shadow: 0 5px 10px 5px rgba(0, 0, 0, 0.4);
}
.item {
	content: '';
	position: absolute;
	top: 10px;
	left: 10px;
	right:10px;
	bottom: 10px;
	border-top: 1px solid white;
	border-bottom: 1px solid white;
	transition: 0.5s;
	-webkit-transform:scaleX(0);
    -moz-transform:scaleX(0);
    -ms-transform:scaleX(0);
    -o-transform:scaleX(0);
    transform:scaleX(0);
	opacity: 0;
}
.work-item:hover > .item {
	-webkit-transform:scaleX(1);
    -moz-transform:scaleX(1);
    -ms-transform:scaleX(1);
    -o-transform:scaleX(1);
    transform:scaleX(1);
		opacity: 1;
}
<section id="work" class="work">
      <h2>Work</h2>
      <div class="work-wrapper">
        <div class="work-item">
          <div class="item item-one"></div>
        </div>
        <div class="work-item">
          <div class="item item-one"></div>
        </div>
        <div class="work-item">
          <div class="item item-one"></div>
        </div>
        <div class="work-item">
          <div class="item item-one"></div>
        </div>
        <div class="work-item">
          <div class="item item-one"></div>
        </div>
        <div class="work-item">
          <div class="item item-one"></div>
        </div>
      </div>
    </section>

您也可以在这里进行测试.. https://jsfiddle.net/nimittshah/tj95b6kL/

关于css 转换不适用于 css 网格,元素定位问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52541159/

相关文章:

javascript - 使 DIV 从中心 div 向外扩展而不是向内扩展

c# - 删除 Grid 的指定子元素

grid - Mathematica - "Triangulation"- 在图表上绘制三角形网格

悬停时的 CSS 转换过渡会恢复到默认大小

javascript - 根据选项值更改 td 背景颜色

html - 堆叠 fa-circle-o 和其他图标,同时保持垂直和水平对齐

javascript - 加载延迟的逐个字母动画

javascript - 困难的 HTML、JavaScript、CSS 网格页面

css - IE10 上使用 CSS3 透视变换的工件

javascript - 将 transform-origin 移回 CSS 中元素的中心