html - 如何使用纯 HTML/CSS 创建响应式图像 map ?

标签 html css

我想使用一张世界地图的图片,并在 map 中的某些地方标上大头针。一旦鼠标悬停在这些图钉上,我希望它们可以点击,所以一旦点击,它们就会跳转到网页的某个部分。我了解如何使用区域和 map 标签,但我不知道如何让它响应并在图像缩小到适合不同屏幕尺寸的尺寸时强制区域/ map 标签留在一个地方。

如果有人可以指导我完成这个过程,那就太好了。我对插件不是很熟悉,所以如果可能的话,我尽量远离它。

我已经添加了一个示例,我发现它类似地代表了我正在尝试做的事情。

body {
  font-family: "bookman old style";
}

:target {
  color: lightyellow;
  background: indianred;
}

h3,
h1 {
  color: indianred;
}

img {
  border: 3px dashed indianred;
}

body {
  counter-reset: srl;
}

h3::before {
  counter-increment: srl;
  content: counter(srl)". ";
}
<h1 style="text-align:center;">The 7 Continents</h1>


<h4 style="text-align:center;">&#10148; Click on the dots in the image to go to a continent section</h4>

<map name="continents_map">
  <area shape="circle" coords="70,70,10" href="#north_america">
  <area shape="circle" coords="133,185,10" href="#south_america">
  <area shape="circle" coords="270,137,10" href="#africa">
  <area shape="circle" coords="292,44,10" href="#europe">
  <area shape="circle" coords="469,201,10" href="#australia">
  <area shape="circle" coords="374,65,10" href="#asia">
  <area shape="circle" coords="340,267,10" href="#antartica">
</map>

<figure style="text-align:center;">
  <img usemap="#continents_map" src= https://rpsthecoder.github.io/img-repo/world_continents.png width="600px" />
  <figcaption>World Map</figcaption>
</figure>


<div>
  <h3 id="africa">Africa</h3>
  <p>Africa is the world's second-largest and second-most-populous continent. At about 30.2 million km<sup>2</sup> (11.7 million sq mi) including adjacent islands, it covers six percent of Earth's total surface area and 20.4 percent of its total land area.
    With 1.1 billion people as of 2013, it accounts for about 15% of the world's human population.</p>
</div>

<div>
  <h3 id="asia">Asia</h3>
  <p>Asia is the Earth's largest and most populous continent, located primarily in the eastern and northern hemispheres. Though it covers only 8.7% of the Earth's total surface area, it comprises 30% of Earth's land area, and has historically been home to
    the bulk of the planet's human population (currently roughly 60%).</p>
</div>

<div>
  <h3 id="europe">Europe</h3>
  <p>Europe is the world's second-smallest continent by surface area, covering about 10,180,000 square kilometres (3,930,000 sq mi) or 2% of the Earth's surface and about 6.8% of its land area. Of Europe's approximately 50 countries, Russia is by far the
    largest by both area and population, taking up 40% of the continent (although the country has territory in both Europe and Asia), while Vatican City is the smallest. Europe is the third-most populous continent after Asia and Africa, with a population
    of 739–743 million or about 11% of the world's population. The most commonly used currency is the euro.</p>
</div>

<div>
  <h3 id="south_america">South America</h3>
  <p>South America has an area of 17,840,000 square kilometers (6,890,000 sq mi). Its population as of 2005 has been estimated at more than 371,090,000. South America ranks fourth in area (after Asia, Africa, and North America) and fifth in population (after
    Asia, Africa, Europe, and North America).</p>
</div>

<div>
  <h3 id="north_america">North America</h3>
  <p>North America covers an area of about 24,709,000 square kilometers (9,540,000 square miles), about 4.8% of the planet's surface or about 16.5% of its land area. As of 2013, its population was estimated at nearly 565 million people across 23 independent
    states, representing about 7.5% of the human population. Most of the continent's land area is dominated by Canada, the United States, Greenland, and Mexico, while smaller states exist in the Central American and Caribbean regions. North America is
    the third largest continent by area, following Asia and Africa, and the fourth by population after Asia, Africa, and Europe.</p>
</div>

<div>
  <h3 id="antartica">Antarctica</h3>
  <p>Antarctica is Earth's southernmost continent, containing the geographic South Pole. It is situated in the Antarctic region of the Southern Hemisphere, almost entirely south of the Antarctic Circle, and is surrounded by the Southern Ocean. At 14.0 million
    km<sup>2</sup> (5.4 million sq mi), it is the fifth-largest continent in area after Asia, Africa, North America, and South America. For comparison, Antarctica is nearly twice the size of Australia. About 98% of Antarctica is covered by ice that averages
    1.9 kilometres (1.2 mi) in thickness, which extends to all but the northernmost reaches of the Antarctic Peninsula.</p>
</div>

<div>
  <h3 id="australia">Australia</h3>
  <p>With a total land area of 8,560,000 square kilometres (3,310,000 sq mi), the Australian continent is the smallest and lowest-lying human-inhabited continent on Earth. The continental shelf connecting the islands, half of which is less than 50 metres
    (160 ft) deep, covers some 2,500,000 square kilometres (970,000 sq mi), including the Sahul Shelf and Bass Strait. As the country of Australia is mostly on a single landmass, and comprises most of the continent, it is sometimes informally referred
    to as an island continent, surrounded by oceans.</p>
</div>

谢谢。

最佳答案

想法是使用使用绝对位置放置在图像上方的标签。然后您只需使用 top/left 指定 % 值。

body {
  font-family: "bookman old style";
  margin: 0;
}

img {
  border: 3px dashed indianred;
  display: block;
}

figure {
  position: relative;
  display: inline-block;
}

figure a {
  position: absolute;
  width: 2%;
  height: 4%;
  border-radius: 50%;
  background: #000;
}

.north_america {
  top: 22%;
  left: 11.4%;
}

.south_america {
  top: 59.3%;
  left: 21.8%;
}
<figure style="text-align:center;">
  <a href="#north_america" class="north_america"></a>
  <a href="#south_america" class="south_america"></a>
  <img usemap="#continents_map" src="https://rpsthecoder.github.io/img-repo/world_continents.png" width="300" />
  <figcaption>World Map</figcaption>
</figure>

<figure style="text-align:center;">
  <a href="#north_america" class="north_america"></a>
  <a href="#south_america" class="south_america"></a>
  <img usemap="#continents_map" src="https://rpsthecoder.github.io/img-repo/world_continents.png" width="600" />
  <figcaption>World Map</figcaption>
</figure>
<figure style="text-align:center;">
  <a href="#north_america" class="north_america"></a>
  <a href="#south_america" class="south_america"></a>
  <img usemap="#continents_map" src="https://rpsthecoder.github.io/img-repo/world_continents.png" width="1000" />
  <figcaption>World Map</figcaption>
</figure>

关于html - 如何使用纯 HTML/CSS 创建响应式图像 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49619782/

相关文章:

javascript - 在悬停时创建多个 div(或表格)

jquery - 获取字符串中 <body> </body> 的内容

javascript - 检查 div 是否包含图像(HTML5 拖放)

javascript - 带动画过渡的整页图像

javascript - 可拖动/可滚动区域内的 iFrame

css - Ruby on Rails + Rspec : Syntax for css selector containing instance variable

html - 如何解决IE6中的select overlap bug?

button - 如何挤压一行中的按钮?

css - 使用 SASS 覆盖默认颜色

javascript - 缩略图在 Nivo slider 中相互堆叠