【问题标题】:Mask <img/> without changing height or positioning遮罩 <img/> 不改变高度或位置
【发布时间】:2017-10-01 14:29:42
【问题描述】:

我有一个页面here 有一个垂直和水平居中的图像。

body {
  margin: 0px;
  height: 100%;
}

#background {
  z-index: -1000;
  position: absolute;
  height: 100%;
  width: 100%;
  overflow: hidden;
}

#background-img {
  width: calc(100% + 200px);
  height: calc(100% + 200px);
  margin-left: -100px;
  margin-top: -100px;
  filter: blur(50px);
}

#body-container {
  height: 100%;
  display: table;
  width: 100%;
}

#display {
  display: table-cell;
  height: 100%;
  margin: 0 auto;
  height: auto;
  position: relative;
  vertical-align: middle;
}

#display-img {
  max-width: 100%;
  border-style: solid;
  border-color: transparent;
  border-width: 33px;
  display: block;
  text-align: center;
  overflow: hidden;
  opacity: .5;
/*  height: 50px;*/
}


#display-img-placeholder {
  max-width: 100%;
  border-style: solid;
  border-color: white;
  border-width: 33px;
  display: block;
  text-align: center;
/*
  width: 930px;
  max-width: calc(100% - 66px);
  margin: 0 auto;
*/
  filter: contrast(1.5);
/*  position: relative;*/
  position: absolute;
  z-index: -1;
}

#display-img-placeholder img {
  width: 100%;
  opacity: 0;
}

#display-img img {
  width: 100%;
}

#img-container {
  max-width: calc(100% - 66px);
/*
  border-style: solid;
  border-color: white;
  border-width: 33px;
*/
  display: block;
  text-align: center;
  width: 930px;
  max-width: calc(100% - 66px);
  margin: 0 auto;
  position: relative;
}
    <div id="background">
      <img id="background-img" src="http://iamwasserman.com/Portfolio/hoh.jpg">
    </div>
    <div id="body-container">
      <div id="display">
        <div id="img-container">
          <div id="display-img-placeholder">
            <img src="http://iamwasserman.com/Portfolio/hoh.jpg">
          </div>
          <div id="display-img">
            <img src="http://iamwasserman.com/Portfolio/hoh.jpg">
          </div>
        </div>
        <h3 id="time-stamp"></h3>
        <div id="dots">
          <div class="dot"></div>
          <div class="dot"></div>
          <div class="dot"></div>
        </div>
      </div>
    </div>

我需要一种在不影响定位的情况下裁剪图像底部 15% 的方法(因此它必须保持相同的大小,但使底部透明)。我尝试在其周围放置一个容器 &lt;div&gt; 并更改高度,但随后它会更改图像的垂直位置。关于如何做到这一点的想法?

s.a. 12

【问题讨论】:

  • 发布您的 html 和 css 代码
  • 您可以添加一个与此图像底部重叠的 div,并将图像的宽度设置为容器 div 的 100%。这将给出图像底部被移除的外观,当它位于 div 后面时。
  • @MehdiKarimi 都在那个链接上
  • 在问题中保留代码仍然会有所帮助,因为我猜 SO 的停留时间比这个演示站点要长 ;) – 还可以考虑添加限制你做事的约束和 还要说出原因。
  • 您需要在此处发布您的标记,而不是第三方网站,明天可能会改变或消失,对未来没有任何帮助。 stackoverflow.com/help/mcve

标签: html css crop centering


【解决方案1】:

你喜欢吗?

#wrap{/* to demonstrate the image on top is partially transparent */
  background-color: rgba(128,128,255,128);
}
#bg {
  background: url(https://i.stack.imgur.com/NgNDR.jpg) no-repeat;
  background-position: -288px, -115px;
/* 1437x768 */
  width: 862px;
  height: 538px;
  border: 2px solid red;
  margin: 115px 288px ;
}
#clip {
/* this is deprecated
  clip: rect( 115px, 288px,  115px, 288px );
*/
/* this works */
clip-path:  inset( 115px 288px  115px 288px );
}
<div id="wrap">
<!--
<img src="https://i.stack.imgur.com/NgNDR.jpg" />

<div id="bg">
</div>
-->

<img src="https://i.stack.imgur.com/NgNDR.jpg" id="clip"/>

</div>

背景位置

基本上,这可以让您的图像具有原始大小 但将链接的图像定位为一开始就自行计算的尺寸。

我首先计算了顶部的 -15%,然后调整了左侧偏移量。后来宽度是原始尺寸和偏移量之间差异的 2 倍。

当然可以使用 javascript 自动计算手动计算。

剪辑

是旧的,但只能与 css 一起工作;你甚至可以做more than just rectangle

【讨论】:

  • 不幸的是,我的 html 中还有很多其他的事情不允许这样做。图像也没有定义的大小。
  • 好吧,那么你最好用 javascript 即时计算这些东西;但原理可以相同;不过,也许仅使用 css 也是可能的
  • clip-path找到了另一种方式;为了实现模糊,我想您需要将图像重叠两次
猜你喜欢
  • 1970-01-01
  • 2012-08-01
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-14
  • 2015-05-30
相关资源
最近更新 更多