【问题标题】:How do i calculate ration width and height of image如何计算图像的比例宽度和高度
【发布时间】:2020-07-15 00:18:07
【问题描述】:

我想根据“宽度”和“高度”参数显示图像。 如何计算图像的比例? 例如,30/45,我需要根据用户的选择来改变宽度和高度。它有什么公式吗?

我的代码

.wall {
  background-image: url(living-room-2.jpg);
  background-size: cover;
  background-position: center center;
  background-repeat: no-repeat;
  height: 100%;
  display: flex;
  justify-content: end;
  /*transform: rotateY(40deg);*/
}
div.photo {
  position: relative;
  -webkit-transform: perspective(1000px) rotateY(30deg);
  transform: perspective(1000px) rotateY(00deg);
  margin: 50px 10px;
  background-size: cover;
background-image:url('http://placekitten.com/g/600/200');
  width: 500px;
  height: 300px;
  background-origin: border-box;
  border-left: 5px solid rgba(0, 0, 0, 0.5);
}
div.photo:before,
div.photo:after {
  content: "";
  position: absolute;
  top: 0;
  width: 0;
  height: 100%;
  box-sizing: border-box;
  background: transparent;
  /*border-top: 4px solid white;*/
  /*border-bottom: 4px solid white;*/
  /*border-left: 10px solid white;*/
  /*border-right: 6px solid rgba(0, 0, 0, 0.5);*/
}
@media only screen and (max-width: 600px) {

  div.photo {
    transform: perspective(1000px) rotateY(10deg);
    height: 150px;
    width: 150px;

  }
}

我想通过用户选择来计算宽度和高度。

【问题讨论】:

  • height = width * ratio,例如比率 === 50/100 === 0.5,因此 900 像素宽的图像将是 450 像素高:900 * 0.5 = 450。
  • 一种方法是使用javascript获取select元素的值,然后根据<select>的当前值做一些数学运算,找出宽度和高度是多少
  • @rayhatfield 用户选择的尺寸以厘米为单位。所以我希望能够根据他选择的内容找到图像的宽度和高度。例如 30/45,新的图像宽度和高度是多少。我认为 450px 不适合手机屏幕。
  • 所以让宽度适合可用空间(100vw 或100% 或其他),并让高度width * ratio。也许我不明白你在问什么。

标签: jquery html css css-transforms css-shapes


【解决方案1】:

不确定我是否理解您的要求,但您可以根据宽度计算高度。看看这个,看看当你改变选择中的值时会发生什么:

const onChange = e => {
  const preview = document.querySelector('.preview')
  const previewHeight = `${parseFloat(e.target.value) * 100}%`;
  preview.style = `padding-bottom: ${previewHeight};`;
}

document.querySelector('select').addEventListener('change', onChange)
.preview {
  width: 100%;
  height: 0;
  position: relative;
  padding-bottom: 66.6666%;
  background: url('http://placekitten.com/g/1200/400') center no-repeat;
  background-size: cover;
  margin-top: 1rem;
}
<div class="demo">
  <select>
    <option value="0.666">30/45</option>
    <option value="0.5">50/100</option>
    <option value="0.5625">9/16</option>
    <option value="0.1">1/10</option>
    <option value="2">2/1</option>    
  </select>
  <div class="preview"></div>
</div>

【讨论】:

  • 雷,有什么办法可以谈谈,以便我可以说明我的问题吗?
  • 你能加入this chat吗?
  • 雷我给你写信给你我的朋友 :)
猜你喜欢
  • 2011-03-28
  • 2021-10-25
  • 1970-01-01
  • 2011-06-04
  • 1970-01-01
  • 2019-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多