CSS:裁剪的阴影框

huangapple go评论64阅读模式
英文:

CSS: cropped Box Shadow

问题

可以在左右两侧裁剪 box-shadow 以使其看起来像这样吗?

CSS:裁剪的阴影框

或者我需要使用两个独立的 div 元素来创建它?
我想要它具备响应式设计,并且应该保持它们之间的关系。

谢谢提前。

问候
Lars

英文:

is it somehow possible to crop a box-shadow on the left and right to make it look like this:

CSS:裁剪的阴影框

Or do I need to create this using two independent divs?
I would like to make it responsive, and it should keep the relations to each other.

Thanks in advance.

Regards
Lars

答案1

得分: 1

以下是您要翻译的内容:

"使用 ::after 可以通过 CSS 创建背景形状。

使用百分比 % 可以使方框具有响应性,同时保持宽高比。

.box {
  margin: 10% 0%;
  width: 100%;
  background-color: blue;
  position: relative;
  text-align: center;
  &::after {
    content: '';
    position: absolute;
    left: 10%;
    top: -20%;
    width: 80%;
    height: 140%;
    background-color: red;
    z-index: -1;
  }
}

button {
  width: 25%;
  height: 2rem;
  border-radius: 20%;
  margin: 2rem;
  padding: 0.5rem;
  border-radius: 1rem;
}
<div class="box">
  <button>Button</button>
</div>
英文:

It is possible to create the background shape with css by using ::after

Using % should allow the box to be responsive yet maintain the aspect ratios.

<!-- begin snippet: js hide: false console: true babel: false -->

<!-- language: lang-css -->

.box {
  margin: 10% 0%;
  width: 100%;
  background-color: blue;
  position: relative;
  text-align: center;
  &amp;::after {
    content: &#39;&#39;;
    position: absolute;
    left: 10%;
    top: -20%;
    width: 80%;
    height: 140%;
    background-color: red;
    z-index: -1
  }
}

button {
  width: 25%;
  height: 2rem;
  border-radius: 20%;
  margin: 2rem;
  padding: 0.5rem;
  border-radius: 1rem;
}

<!-- language: lang-html -->

&lt;div class=&quot;box&quot;&gt;
  &lt;button&gt;Button&lt;/button&gt;
&lt;/div&gt;

<!-- end snippet -->

答案2

得分: 1

你可以在单个元素上设置多个阴影。如果增加偏移并设置负的扩散半径,你可以为期望的效果绘制两个阴影。

参见 https://developer.mozilla.org/en-US/docs/Web/CSS/box-shadow

可能的示例,使用你自己的尺寸和阴影数值:

div {
  aspect-ratio: 16/9;
  background: #377172;
  width: 90vmin;
  box-shadow: 0 15vmin 0 -8vmin #CCD5CB, 0 -15vmin 0 -8vmin #CCD5CB
}

clip-path也可能是一个选项:

div {
  aspect-ratio: 16/9;
  background: #377172;
  width: 90vmin;
  box-shadow: 0 0 0 8vmin #CCD5CB;
  clip-path: polygon(0 0, 8vmin  0, 8vmin -8vmin, calc(100% - 8vmin) -8vmin,  calc(100% - 8vmin) 0, 100% 0, 100% 100%,  calc(100% - 8vmin) 100%, calc(100% - 8vmin) calc(100% + 8vmin), 8vmin calc(100% + 8vmin), 8vmin 100%, 0% 100%);
}

请注意,这只是代码的翻译部分,不包括其他内容。

英文:

you can set many shadows on a single element. if increase offset and set negative spread radius, you can draw 2 shadows for your expected result.

see https://developer.mozilla.org/en-US/docs/Web/CSS/box-shadow

possible example, use your size and own values for your shadow(s)

<!-- begin snippet: js hide: false console: true babel: false -->

<!-- language: lang-css -->

div {
  aspect-ratio: 16/9;
  background: #377172;
  width: 90vmin;
  box-shadow: 0 15vmin 0 -8vmin #CCD5CB, 0 -15vmin 0 -8vmin #CCD5CB
}


/* demo purpose */

html {
  display: grid;
  min-height: 100vh;
  place-items: center
}

div {
  color: white;
  font-size: 10vmin;
  display: grid;
  place-items: center
}

<!-- language: lang-html -->

&lt;div&gt;div &amp; 2 shadows&lt;/div&gt;

<!-- end snippet -->

clip-path could also be an option

<!-- begin snippet: js hide: false console: true babel: false -->

<!-- language: lang-css -->

div {
  aspect-ratio: 16/9;
  background: #377172;
  width: 90vmin;
  box-shadow: 0 0 0 8vmin #CCD5CB;
  clip-path: polygon(0 0, 8vmin  0, 8vmin -8vmin, calc(100% - 8vmin) -8vmin,  calc(100% - 8vmin) 0, 100% 0, 100% 100%,  calc(100% - 8vmin) 100%, calc(100% - 8vmin) calc(100% + 8vmin), 8vmin calc(100% + 8vmin), 8vmin 100%, 0% 100%);
}


/* demo purpose */

html {
  display: grid;
  min-height: 100vh;
  place-items: center;
  /* gives a shadow to the div and its shadow 
  filter:drop-shadow(0 0 5px red); 
  ... for infos only not needed */
}

div {
  color: white;
  font-size: 10vmin;
  display: grid;
  place-items: center
}

<!-- language: lang-html -->

&lt;div&gt;div &amp; 1 shadow&lt;/div&gt;

<!-- end snippet -->

huangapple
  • 本文由 发表于 2023年6月12日 18:45:20
  • 转载请务必保留本文链接:https://go.coder-hub.com/76455877.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定