可点击 link 对于图片来说太大了

Clickable link is too large for image

我已经到处找了好几天了,似乎无法解决重新缩放图像(仅 css)的问题,这些图像被放大得不成比例(这是一项作业)。图像应该垂直堆叠在左侧栏中,右侧是文本正文,如下所示:

这是html(无法更改):

    <aside class = "left">
        <a href="https://commons.wikimedia.org/wiki/File%3AUltimate_Frisbee%2C_Jul_2009_-_17.jpg"><img src="https://upload.wikimedia.org/wikipedia/commons/5/5d/Ultimate_Frisbee%2C_Jul_2009_-_19.jpg" alt="Creative Common Ultimate Photo" title="By Ed Yourdon [CC BY-SA 2.0 (http://creativecommons.org/licenses/by-sa/2.0)], via Wikimedia Commons"/> </a>

        <a href="https://commons.wikimedia.org/wiki/File%3AUltimate_Frisbee_Colorado_Cup_2005.jpg"><img alt="Ultimate Frisbee Colorado Cup 2005" src="https://upload.wikimedia.org/wikipedia/commons/thumb/7/7d/Ultimate_Frisbee_Colorado_Cup_2005.jpg/512px-Ultimate_Frisbee_Colorado_Cup_2005.jpg"/></a>


        <a href="https://www.flickr.com/photos/paradisecoastie/15409853738/" title="Ultimate Frisbee"><img src="https://farm4.staticflickr.com/3948/15409853738_7dbfbfbac7_k.jpg"  alt="Ultimate Frisbee"></a>
    </aside>
    <section class = "right">...

我想保持图像的纵横比,所以我使用百分比 %。但是每次我使用它时,link 仍然保持其巨大的尺寸,因此在 aside 容器内占据了一个巨大的 space。当我尝试缩小 link 本身时,图像再次缩小并且问题仍然存在。这是我的代码:

aside.left{
  background-color: #777613;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  padding: 0 2% 2% 2%;
  float: left;
  margin-right: 0.5%;
  height: 180vh;
}
aside img{
  display:block;
  margin:20% 0 10% 0;
  height:20%;
  width:20%;
  border:1px solid black;
}

我做错了什么?提前致谢!

您使用了错误的 CSS 选择器。 当你改变 `

时会更好
aside img{  

aside > a > img{

您为 img 设置的边距 top & bottom 过大,即:aside img CSS 中的 20% 和 10%。我减到0了,按你的要求调整

aside.left{
  background-color: #777613;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  padding: 0 2% 2% 2%;
  float: left;
  margin-right: 0.5%;
  height: 180vh;
}
aside img{
  display:block;
  margin:0;
  height:20%;
  width:20%;
  border:1px solid black;
}
<aside class = "left">
   <a href="https://commons.wikimedia.org/wiki/File%3AUltimate_Frisbee%2C_Jul_2009_-_17.jpg"><img src="https://upload.wikimedia.org/wikipedia/commons/5/5d/Ultimate_Frisbee%2C_Jul_2009_-_19.jpg" alt="Creative Common Ultimate Photo" title="By Ed Yourdon [CC BY-SA 2.0 (http://creativecommons.org/licenses/by-sa/2.0)], via Wikimedia Commons"/></a>
   <a href="https://commons.wikimedia.org/wiki/File%3AUltimate_Frisbee_Colorado_Cup_2005.jpg"><img alt="Ultimate Frisbee Colorado Cup 2005" src="https://upload.wikimedia.org/wikipedia/commons/thumb/7/7d/Ultimate_Frisbee_Colorado_Cup_2005.jpg/512px-Ultimate_Frisbee_Colorado_Cup_2005.jpg"/></a>
   <a href="https://www.flickr.com/photos/paradisecoastie/15409853738/" title="Ultimate Frisbee"><img src="https://farm4.staticflickr.com/3948/15409853738_7dbfbfbac7_k.jpg"  alt="Ultimate Frisbee"></a>
</aside>

    <style>
    aside.left{
      background-color: #777613;
      box-sizing: border-box;
      display: flex;
      flex-direction: column;
      /*padding: 0 2% 2% 2%; */
      float: left;
      margin-right: 0.5%;
      height: 100%;
    }
    aside img{
      display:block;
     /* margin:20% 0 10% 0; */
      height:100%;
      width:100%;
      border:1px solid black;
    }

    aside.left{
      width: 50%;
    }
    section.right{
      width:40%;
    }
    aside > a{
      height:33.3%;
      margin:0px;
    }
    </style>

这可能会有所帮助。抱歉有多个 class 个名字。

首先,Jack,你不应该使用比你的要求大的图像,而是先使用 Adob​​e Photoshop 等工具或其他可用的工具制作符合你要求的图像,然后再使用它。

其次,您应该在正文而不是单个组件处留出边距,以使页面居中。否则,这将结束保持页面居中的目的。 对于 body 你必须保持 css 为

body{

                margin: 0;
                margin-left:2%;
                margin-right: 2%; 

}

这里我保留了 margin-left:2%,否则最好的做法是为页面所有元素所在的主容器指定宽度,并设置 margin-left:auto;和 margin-right:auto;设置 margin 0 最初使页面保持在顶部,如图所示。

第三,为你的 aside 元素指定宽度。 css for aside 元素为

aside.left{
  background-color: #777613;
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    height: 500px;
    padding-left: 2%;
    padding-right: 2%;
    padding-top: 2%;
    width: 15%;
} 

这里我根据自己的方便设置了height:500px,但是您可以根据您的页面结构自行设置。

css for link of aside as

aside a{

    display: inline-flex;
    margin-bottom: 4%;
}

此处 inline-flex 将 link 保留在 flex 列内,不允许它外出。 margin-bottom 将分隔图像。

css 对于 在 link 中的图像是

aside a img{
  border: 1px solid black;
    display: block;
    width: 96%;
}

这里如果你使用aside img那么这意味着所有的img元素都在aside里面。意思是说,即使你直接在旁边使用图像而不输入 link,那么它也会为 link 下的图像渲染 css。如果你确定对 link 内部和 link 外部的图像渲染相同的 css,那么你可以使用 aside img。可以正常播放。