Как я могу щелкнуть ссылку, которая открывает изображение, а затем отображать только часть этого изображения

У меня есть большое изображение карты с достопримечательностями.

Я хочу, чтобы на странице текста была кнопка, при нажатии на кнопку изображение карты открывается в другом окне. Затем мне нужно, чтобы изображение отображало только соответствующую часть карты, показывающую достопримечательность, указанную на исходной странице с помощью кнопки.

Я нашел способы показать определенный участок карты с помощью и координат, или с помощью карты в качестве листа спрайтов, или с помощью CSS background-postion, но я не могу найти способ реализовать это, нажав кнопку.

В идеале я бы хотел добиться этого с помощью только CSS, потому что будет довольно много страниц, ссылающихся на это изображение.

Вот небольшой справочник того, чего я пытаюсь достичь.

Изображение, показывающее, как это работает

    <style>

.map-one {
  background: url('map.jpg');
  background-position: center bottom;
  height: 300px;
  width: 300px;
}

</style>

<button><a class = "map-one" href = "map.jpg">Click</a></button>

Это пример кода, который я пробовал, что явно неверно, но я не знаю, как применить стиль css к изображению при нажатии на ссылку.

Можете ли вы выделить проблему, которая мешает вам привязать ее к кнопке? Вы на правильном пути, используя высоту, ширину и положение фона, чтобы вырезать нужную часть изображения, но без кода для просмотра или более подробного объяснения мы понятия не имеем, почему вы не можете его привязать к кнопке. Когда кнопка нажата, вы должны вычислить, какие значения вам нужны, чтобы показать правильный фрагмент изображения, и передать их на вторую страницу. (параметр url, postMessage, ...). Затем вторая страница просто должна посмотреть на эти значения и изменить CSS встроенного изображения.

Shilly 21.11.2018 15:56

Приведите пример кода, чтобы показать, что вы пробовали.

Peter 21.11.2018 15:58

Я попытался сделать фоновую позицию css, а затем добавил класс в тег привязки на кнопке, но ничего не произошло, когда я нажал кнопку. Все, что я нашел в Интернете, отображало изображение в div на той же странице, но мое изображение должно быть отдельной страницей, которая открывается при нажатии кнопки. Очевидно, я не хочу, чтобы для каждого раздела карты вызывались отдельные изображения.

Blue-Radio 21.11.2018 16:01

Следовательно, вам необходимо передать правильные данные с первой страницы на вторую. Самый простой способ - просто включить запрос или хеш-фрагмент в URL-адрес и просмотреть их на второй странице, чтобы она знала, какой объект карты отображать.

Shilly 21.11.2018 16:05
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
867
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ну, это не работает только с чистым css, вам нужно передать некоторые параметры в новое окно. Итак, я предполагаю, что вы передаете координаты X и Y в новое окно, и они доступны на вашей новой странице.

Сначала вам нужно обернуть «Карту», ​​чтобы дать ей область просмотра. Если на странице больше ничего нет, теоретически можно использовать body:

<div id = "mapviewport">
<div id = "map">
</div>
</div>

Поэтому, если вы хотите, чтобы пользователь мог исследовать карту, вы можете использовать overflow: auto в области просмотра, в противном случае используйте overflow: hidden. Контейнер карты получает ширину / высоту карты. Карта предоставляется через background-image на карте-контейнере.

Теперь, чтобы прокрутить до нужной позиции, используйте .scrollTop и .scrollLeft в mapViewport, чтобы прокрутить карту в нужное место.

Ответ принят как подходящий

Вам нужно будет откалибровать значения, пока вы не достигнете точной области, которую хотите, но код будет примерно таким:

Главная страница

<a href = "map.html" target = "_blank"><button> <!-- Map page path -->
    CLICK ME!
</button></a>

Страница карты

<style>
    div.map {
        background-image: url('map.png'); /* image file path */
        background-position: 70px 90px;   /* image position  */
        width: 200px;                     /* image size      */
        height: 200px;
    }
</style>
<div class = "map"></div>

Спасибо, похоже, работает. Мне просто нужно определить расположение моих точек интереса. Ваше здоровье

Blue-Radio 21.11.2018 16:27

Другие вопросы по теме