【问题标题】:Img width on Opera not workingOpera上的Img宽度不起作用
【发布时间】:2016-05-03 21:41:58
【问题描述】:

我是 HTML 和 CSS3 的新手。 我正在学习并尝试构建一个新网页。我的图片库适用于除 Opera 之外的所有浏览器,纵向图片的宽度仅在 Opera 中失真,但适用于横向图片。

HTML

    <!-- Gallery Image 1 -->
            <div class="thumbox">
                    <a href="#openphoto1">
                        <img src="http://www.ghyllfarm.co.uk/_fiddle/image_1_thumb.jpg" width="110" height="110" alt=" ">
                    </a>
                <div id="openphoto1" class="modalDialog">
                    <div id="landscapephoto">
                        <a href="#close" title="Close" class="close">X
                        </a>
                            <img src="http://www.ghyllfarm.co.uk/_fiddle/image_1.jpg" width="780" height="520" alt=" "> 
                        <div class="photolabel">Landscape Image
                        </div>
                    </div>
                </div>
            </div>
                <div class="thumblabel">Click to open
                </div>


    <!-- Gallery Image 2 -->

            <div class="thumbox">
                    <a href="#openphoto2">
                        <img src="http://www.ghyllfarm.co.uk/_fiddle/image_2_thumb.jpg" width="110" height="110" alt=" ">
                    </a>
                <div id="openphoto2" class="modalDialog">
                    <div id="portraitphoto">
                        <a href="#close" title="Close" class="close">X
                        </a>
                            <img src="http://www.ghyllfarm.co.uk/_fiddle/image_2.jpg"  height="780" width="520" alt=" ">    
                        <div class="photolabel">Portrait Image
                        </div>
                    </div>
                </div>
            </div>
                <div class="thumblabel">Click to open
                </div>

CSS

img {
width: 100%;
height: 100%;
width: auto\9; /* ie8 */
}

.thumbox {
width: 110px;
height: 110px;
Margin: 0px auto 0px auto;
}

.thumblabel {
width: 110px;
height: 20px;
Margin: 10px auto 10px auto;
font-family:Tahoma, Geneva, sans-serif;
font-size: 12px;
text-align: center;
color:#060;
}

.modalDialog {
position: fixed;
font-family: Arial, Helvetica, sans-serif;
top: 0;
right: 0;
bottom: 0;
left: 0;
background: rgba(0,0,0,0.6);
z-index: 99999;
opacity:0;
-webkit-transition: opacity 400ms ease-in;
-moz-transition: opacity 400ms ease-in;
transition: opacity 400ms ease-in;
pointer-events: none;
} 

.modalDialog:target {
opacity:1;
pointer-events: auto;
}

.modalDialog > div {
position: fixed;
top: 50%;
left: 50%;
-ms-transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
padding: 15px 15px 5px 15px;
border-radius: 10px;
background: #fff;
}

#landscapephoto {
width: 50%;
height: auto;
}

#portraitphoto {
width: auto;
height: 70%;
padding-bottom: 40px;
}

.close {
background: #606061;
color: #FFFFFF;
line-height: 25px;
position: absolute;
right: -12px;
text-align: center;
top: -10px;
width: 24px;
text-decoration: none;
font-weight: bold;
-webkit-border-radius: 12px;
-moz-border-radius: 12px;
border-radius: 12px;
-moz-box-shadow: 1px 1px 3px #000;
-webkit-box-shadow: 1px 1px 3px #000;
box-shadow: 1px 1px 3px #000;
}

.close:hover { background: #00d9ff; }

.photolabel {
width: 300px;
height: 20px;
Margin: 10px auto 10px auto;
font-family:Tahoma, Geneva, sans-serif;
font-size: 14px;
text-align: center;
color:#060;
}

【问题讨论】:

  • 哪个版本?您可以创建一个小提琴或将其发布到某个地方吗?
  • 我会尝试的第一件事是将您的divs 重命名为id="gallery_imgbox" - ID 在您的页面上应该是唯一的。正如@Gabriel 所说,请指定您指的是哪个版本的 Opera(我猜是基于 Presto 的旧 Opera 12.x,而不是基于 Blink 的最新版本?),并创建一个 JS Fiddle 这个问题会帮助其他人确认/测试您的问题。最后...欢迎来到 SO。 :-)
  • 我一直在使用 Opera 版本 36.0.2130.65 进行测试。我已经上传了一些图片并创建了一个 JS Fiddle jsfiddle.net/RHPGhyll/5fvm7rgb/3 (我希望它是正确的,因为我以前从未使用过它)我的小提琴在 Opera 中有同样的问题,纵向图像的宽度被扭曲了。小提琴似乎也扭曲了图像,所以我认为这与缩放有关,但我看不出如何对其进行排序。 p.s.感谢您的欢迎,Stackoverflow 一直是学习编码的宝贵资源。
  • @AmosM.Carpenter 我忘了说为什么我没有使用 width: 30%;和高度:自动;至于风景图。如果我这样做,Safari 中的高度会失真,并且在调整窗口大小时文本不会居中。
  • @RHP:感谢您提供浏览器版本和小提琴。不过,我仍然不确定你说的是什么错误 - 宽度是如何扭曲的? Opera 基于 Blink,即使用与 Chrome、Vivaldi 和其他衍生产品相同的渲染引擎,因此我非常怀疑它“适用于除 Opera 之外的所有浏览器”。从您的小提琴来看,似乎缺少一些 JavaScript,我猜,当您单击缩略图时,应该显示带有较大图片的 div。您可以将 JavaScript 添加到您的小提琴并编辑您的问题以链接到它。

标签: html css opera image-size


【解决方案1】:

如果我对您的理解正确,您基本上是在调整窗口大小时尝试保持纵向和横向图像的纵横比。将this answer 调整为非常适合您的similar question,您需要做的是使用视口单位,如下所示:

#landscapephoto {
    width: 50vw; /* 50% of viewport width */
    height: 37.5vw; /* = 50 * (3/4), i.e. three-quarters of viewport width */
}

#portraitphoto {
    width: 46.67vh; /* = 70 * (2/3), i.e. two-thirds of viewport height */
    height: 70vh; /* 70% of viewport height */
    padding-bottom: 40px;
}

这是分叉的小提琴:

https://jsfiddle.net/7cb24j8d/

我保留了横向宽度 (50%) 和纵向高度 (70%) 的初始百分比,并将 other 宽度和高度设置为相对于这些,但显然你会能够根据自己的喜好调整这些数字。您还必须调整div.photolabel,因为当您调整大小时它当前相对于图像偏离中心(但这是一个不同的问题......)。您还应该检查caniuse 以确保您的目标浏览器都支持视口单元。

【讨论】:

  • M.Carpenter 非常感谢我玩过小提琴,一切似乎都按我预期的方式工作。另一个答案也有很大帮助(很遗憾我在之前的搜索中错过了纵横比),我将阅读视口单位。
  • @RHP:很高兴为您提供帮助。如果它有助于解决您的问题,请随时接受答案。
  • 我已经整理了我的代码并更正了图像大小,以便 3:2 比例正常工作。我还修改了图片位置,以便在我查看我们现有的网站后这篇文章仍然有效。我已经修改了 JS Fiddle 以反映这些更改 jsfiddle.net/RHPGhyll/g81bvdqt 这些现在都可以在 IE、Firefox、Opera 和 Chrome 中运行,但它们不会在 Safari 中运行。我已经尝试过你的分叉小提琴,但这似乎在 Safari 中也不起作用。我已经检查了caniuse.com/#feat=viewport-units,它们应该都可以工作。有什么建议吗?
  • @RHP:我不使用 Safari,所以我恐怕帮不了你。我建议提出一个单独的问题,因为这是一个单独的问题,用 Safari 标记它,并指定究竟什么“似乎不起作用”。链接到这个问题的上下文,并粘贴你的小提琴链接。祝你好运。
猜你喜欢
  • 2013-07-22
  • 2021-08-13
  • 2011-04-24
  • 2011-05-21
  • 1970-01-01
  • 2015-01-25
  • 1970-01-01
  • 2020-10-18
  • 1970-01-01
相关资源
最近更新 更多