制作一个响应式的HTML和CSS部分

3

目前我的网站完全响应式(布局、图片等),但有一个问题。有一部分代码我不知道如何使其响应式。这是我想要使其响应式的代码fiddle

我希望它能像网站的其他部分一样自适应大小。如果有人有任何想法,我将不胜感激!

谢谢!

HTML & CSS:

<!doctype html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
<link href='//fonts.googleapis.com/css?family=Roboto+Condensed:300,400,700' rel='stylesheet' type='text/css'>
<link href='//fonts.googleapis.com/css?family=Roboto:100,300,400,700,900' rel='stylesheet' type='text/css'>
<style>
html 
  color: #e5e5e5;
  text-align: center;
  font-family: "Roboto", Helvetica, sans-serif;
}

body {
  max-width: 1200px;
  margin: 20px auto;
  padding: 0 100px;
  overflow-x: hidden;
}

.description {
  max-width: 600px;
  margin: 0 auto;
  color: rgba(229, 229, 229, 0.7);
}

div, img, footer {
  position: relative;
  box-sizing: border-box;
}

h1, h2, h3, h4, h5, h6 {
  margin-bottom: 20px;
  text-transform: uppercase;
  font-family: "Roboto Condensed", Helvetica, sans-serif;
  font-weight: 300;
}

h1 {
  font-size: 36pt;
}

h2 {
  font-size: 24pt;
}

h3 {
  font-size: 18pt;
}

h4 {
  font-size: 16pt;
}

h5 {
  font-size: 14pt;
}

h6 {
  font-size: 12pt;
}

p {
  font-size: 12pt;
  margin-bottom: 12pt;
  margin-right: 12px;
  margin-left: 12px;

}

strong {
  font-weight: 900;
  font-family: "Roboto Condensed", Helvetica, sans-serif;
  color: #e5e5e5;
}

a {
  -webkit-transition: color 0.25s ease-in-out;
  transition: color 0.25s ease-in-out;
  font-family: "Roboto Condensed", Helvetica, sans-serif;
  text-transform: uppercase;
  text-decoration: none;
  color: #dff3fd;
}
a:visited {
  color: #dff3fd;
}
li.active a, a:hover, a:active {
  color: #e5e5e5;
}

.centered {
  position: absolute;
  top: 50%;
  left: 50%;
  margin-top: -50px;
  margin-left: -100px;
  -webkit-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
}

.centered-y {
  position: inline-block;
  width: auto;
  top: 50%;
  -webkit-transform: translateY(-50%);
  transform: translateY(-50%);
}

.distribution-map {
  position: relative;
  width: 1190px;
  padding: 20px;
  box-sizing: border-box;
  margin: 0 auto;
}
.distribution-map > img {
  width: 100%;
  position: relative;
  margin: 0;
  padding: 0;
}
.distribution-map .map-point {
  cursor: pointer;
  outline: none;
  z-index: 0;
  position: absolute;
  width: 40px;
  height: 40px;
  border-radius: 20px;
  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
  opacity: 0.8;
  -webkit-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%); 
  -moz-transition: opacity 0.25s ease-in-out 0.25s, width 0.25s ease-in-out 0.25s, height 0.25s ease-in-out 0.25s, z-index 0.25s ease-in-out 0.25s; 
  -o-transition: opacity 0.25s ease-in-out 0.25s, width 0.25s ease-in-out 0.25s, height 0.25s ease-in-out 0.25s, z-index 0.25s ease-in-out 0.25s; 
  -webkit-transition: opacity 0.25s ease-in-out, width 0.25s ease-in-out, height 0.25s ease-in-out, z-index 0.25s ease-in-out;
  -webkit-transition-delay: 0.25s, 0.25s, 0.25s, 0.25s;
  -webkit-transition: opacity 0.25s ease-in-out 0.25s, width 0.25s ease-in-out 0.25s, height 0.25s ease-in-out 0.25s, z-index 0.25s ease-in-out 0.25s;
  transition: opacity 0.25s ease-in-out 0.25s, width 0.25s ease-in-out 0.25s, height 0.25s ease-in-out 0.25s, z-index 0.25s ease-in-out 0.25s; 
  background: rgba(26, 26, 26, 0.85);
  border: 3px solid #dff3fd;
}
.distribution-map .map-point .content {
  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
  opacity: 0;
  -webkit-transition: opacity 0.25s ease-in-out;
  transition: opacity 0.25s ease-in-out; 
  width: 100%;
  height: 100%;
  left: 50%;
  -webkit-transform: translateX(-50%);
  transform: translateX(-50%);
  overflow: overlay;
}
.distribution-map .map-point:active, .distribution-map .map-point:focus {
  position: absolute;
  margin-left: auto;
  margin-right: auto;
  padding: 0;
  filter: progid:DXImageTransform.Microsoft.Alpha(enabled=false);
  opacity: 1;
  width: 550px;
  height: 400px;
  color: #e5e5e5;
  z-index: 1;
  -webkit-transition: opacity 0.25s ease-in-out, width 0.25s ease-in-out, height 0.25s ease-in-out;
  transition: opacity 0.25s ease-in-out, width 0.25s ease-in-out, height 0.25s ease-in-out; 
}
.distribution-map .map-point:active .content, .distribution-map .map-point:focus .content {
  filter: progid:DXImageTransform.Microsoft.Alpha(enabled=false);
  opacity: 1;
  -moz-transition: opacity 0.25s ease-in-out 0.25s, height 0.25s ease-in-out, overflow 0.25s ease-in-out;
  -o-transition: opacity 0.25s ease-in-out 0.25s, height 0.25s ease-in-out, overflow 0.25s ease-in-out;
  -webkit-transition: opacity 0.25s ease-in-out, height 0.25s ease-in-out, overflow 0.25s ease-in-out;
  -webkit-transition-delay: 0.25s, 0s, 0s;
  -webkit-transition: opacity 0.25s ease-in-out 0.25s, height 0.25s ease-in-out, overflow 0.25s ease-in-out;
  transition: opacity 0.25s ease-in-out 0.25s, height 0.25s ease-in-out, overflow 0.25s ease-in-out;
  overflow: hidden; 
}
.distribution-map .map-point:active .content a:hover, .distribution-map .map-point:active .content a:active, .distribution-map .map-point:focus .content a:hover, .distribution-map .map-point:focus .content a:active {
  color: #dff3fd;
}
        </style>
 </head>
<body>
<h1></h1>
<div class="distribution-map">


    <button class="map-point" style="top:24%;left:26.5%">
        <div class="content">
            <div class="centered-y">
                <h2>Another</h2>
                <p>details</p>
              <iframe width="350" height="197" src="https://www.youtube.com/embed/5MgBikgcWnY" frameborder="0" allowfullscreen></iframe>
            </div>
        </div>
    </button>
    <button class="map-point" style="top:26%;left:49%">
        <div class="content">
            <div class="centered-y">
                <h2>Another</h2>
                <p>Details...</p>
            </div>
        </div>
    </button>
   <button class="map-point" style="top:27.3%;left:71.4%">
        <div class="content">
            <div class="centered-y">
                <h2>Another</h2>
                <p>Details...</p>
            </div>
        </div>
    </button>
    <button class="map-point" style="top:63.5%;left:31.5%">
        <div class="content">
            <div class="centered-y">
                <h2>Another one</h2>
                <p>Details...</p>
            </div>
        </div>
    </button>
    <button class="map-point" style="top:65%;left:56%">
        <div class="content">
            <div class="centered-y">
                <h2>another one</h2>
                <p>Details...</p>
            </div>
        </div>
    </button>
     <button class="map-point" style="top:68%;left:74%">
        <div class="content">
            <div class="centered-y">
                <h2>Another</h2>
                <p>Details...</p>
            </div>
        </div>
    </button>
</div>

你为什么在这里使用绝对和相对定位?你有没有什么理由必须将这些点从文档的正常流程中拿出来? - BSMP
2个回答

1

看起来只需要更改一个设置:

.distribution-map {
  width: 100%;
}

(而不是固定宽度)

谢谢你的回答,约翰内斯。我发现当我将宽度设置为100%时,即使是扩展后的圆仍然超出屏幕。谢谢。 - Joe

1
你需要使用百分比来使所有的东西都具有响应性。媒体查询并不总是足够的。我建议忘记像素。即使是字体大小也是如此。你所需要做的就是改变基础像素(body)大小而不是每个h1、h2等的字体大小。现代应用程序尽可能少使用像素。
在你的情况下,如果你希望你的圆圈始终具有响应性,在你的"distribution-map."中使用"width:100%"。同时,对于 ".distribution-map .map-point:active, .distribution-map .map-point:focus, .distribution-map .map-point:hover",例如我使用的是"width:50%",这将在任何时候占据屏幕宽度的 50%,这样你就可以得到响应式设计了。

回答其他问题:@Joe,这是它的样子,1em = 100% ≈ 12pt ≈ 16px。当然,如果您在body中有其他内容,例如20px(或浏览器默认px ->取决于浏览器),并且您使h1为150%,则例如您将获得30px(子元素采用该大小)。当您使用媒体查询时,这很好。您只需要更改body中的px,其余部分就会自适应。至于边框的宽度和高度,您需要有一些规范化程序或重置(或自己更改为0px),否则您也会有默认边框。这就是为什么CSS中40%+ 60%的宽度可能比100%还要高的另一个问题。另一个问题是边距的行为很奇怪。如果您调整宽度,margin-top将会改变...而不是高度。我尽可能多地使用top,因为只有当您更改窗口的高度时,该值才会调整大小。开始设计移动设备的最佳方法是首先进行设计。(渐进增强)我建议阅读《头等移动Web》中的所有内容。


谢谢你的回答PVL。如果我想把这些东西调整为我想要的尺寸(比如指定像素),那我是不是可以试着用百分比来寻找合适的大小呢?谢谢。 - Joe
1
@Joe 请参考上面的答案,评论区太短无法展开。 - PVL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接