لوکیشن/دماوند پلیمر - فراغیب
بدون خلاصۀ ویرایش |
بدون خلاصۀ ویرایش |
||
| خط ۱: | خط ۱: | ||
< | <html lang="fa" dir="rtl"> | ||
<head> | |||
< | <meta charset="UTF-8" /> | ||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |||
<meta name="description" content="نمایش موقعیت روی نقشه به همراه دکمههای مسیریابی، تماس و اشتراکگذاری با طراحی ریسپانسیو و افکت حرفهای." /> | |||
</ | <meta name="robots" content="index,follow" /> | ||
<title>نقشه موقعیت و راههای ارتباطی</title> | |||
< | <style> | ||
:root { | |||
--radius: 12px; | |||
--radius-sm: 10px; | |||
--transition: 0.35s ease; | |||
--shadow-soft: 0 8px 20px rgba(0, 0, 0, 0.08); | |||
--shadow-hover: 0 14px 28px rgba(0, 0, 0, 0.14); | |||
--map-border: #d9d9d9; | |||
--route-bg: #e3f2fd; | |||
--route-text: #1976d2; | |||
--route-border: #bbdefb; | |||
--call-bg: #e8f5e9; | |||
--call-text: #388e3c; | |||
--call-border: #c8e6c9; | |||
--share-bg: #fff3e0; | |||
--share-text: #f57c00; | |||
--share-border: #ffe0b2; | |||
} | |||
* { | |||
box-sizing: border-box; | |||
} | |||
html { | |||
scroll-behavior: smooth; | |||
} | |||
body { | |||
margin: 0; | |||
font-family: Tahoma, sans-serif; | |||
background: #ffffff; | |||
color: #222; | |||
line-height: 1.6; | |||
} | |||
.location-card { | |||
width: 100%; | |||
max-width: 1000px; | |||
margin: 0 auto; | |||
padding: 0 12px; | |||
} | |||
.map-frame { | |||
position: relative; | |||
overflow: hidden; | |||
border: 1px solid var(--map-border); | |||
border-radius: var(--radius); | |||
background: #f8f8f8; | |||
} | |||
.map-frame iframe { | |||
display: block; | |||
width: 100%; | |||
height: 250px; | |||
border: 0; | |||
} | |||
.action-buttons { | |||
display: grid; | |||
grid-template-columns: repeat(3, minmax(0, 1fr)); | |||
gap: 10px; | |||
margin-top: 15px; | |||
} | |||
.action-btn { | |||
position: relative; | |||
display: inline-flex; | |||
align-items: center; | |||
justify-content: center; | |||
min-height: 50px; | |||
padding: 12px 16px; | |||
border-radius: var(--radius-sm); | |||
border: 1px solid transparent; | |||
text-decoration: none; | |||
font-weight: 700; | |||
font-size: 15px; | |||
text-align: center; | |||
cursor: pointer; | |||
overflow: hidden; | |||
isolation: isolate; | |||
transition: | |||
transform var(--transition), | |||
box-shadow var(--transition), | |||
border-color var(--transition), | |||
background-color var(--transition), | |||
color var(--transition); | |||
will-change: transform; | |||
-webkit-tap-highlight-color: transparent; | |||
} | |||
.action-btn::before { | |||
content: ""; | |||
position: absolute; | |||
right: -30%; | |||
bottom: -120%; | |||
width: 42%; | |||
height: 240%; | |||
transform: rotate(28deg); | |||
background: linear-gradient( | |||
180deg, | |||
rgba(255, 255, 255, 0) 0%, | |||
rgba(255, 255, 255, 0.18) 25%, | |||
rgba(255, 255, 255, 0.62) 50%, | |||
rgba(255, 255, 255, 0.18) 75%, | |||
rgba(255, 255, 255, 0) 100% | |||
); | |||
opacity: 0; | |||
pointer-events: none; | |||
z-index: 0; | |||
} | |||
.action-btn span { | |||
position: relative; | |||
z-index: 1; | |||
white-space: nowrap; | |||
} | |||
.action-btn:hover, | |||
.action-btn:focus-visible { | |||
transform: translateY(-4px); | |||
box-shadow: var(--shadow-hover); | |||
} | |||
.action-btn:hover::before, | |||
.action-btn:focus-visible::before { | |||
opacity: 1; | |||
animation: buttonShine 0.9s ease forwards; | |||
} | |||
.action-btn:focus-visible { | |||
outline: 2px solid rgba(25, 118, 210, 0.35); | |||
outline-offset: 3px; | |||
} | |||
.action-btn:active { | |||
transform: translateY(-1px); | |||
box-shadow: var(--shadow-soft); | |||
} | |||
.route-btn { | |||
background: var(--route-bg); | |||
color: var(--route-text); | |||
border-color: var(--route-border); | |||
} | |||
.call-btn { | |||
background: var(--call-bg); | |||
color: var(--call-text); | |||
border-color: var(--call-border); | |||
} | |||
.share-btn { | |||
background: var(--share-bg); | |||
color: var(--share-text); | |||
border-color: var(--share-border); | |||
} | |||
@keyframes buttonShine { | |||
0% { | |||
right: -30%; | |||
bottom: -120%; | |||
opacity: 0; | |||
} | |||
15% { | |||
opacity: 1; | |||
} | |||
100% { | |||
right: 78%; | |||
bottom: 105%; | |||
opacity: 0; | |||
} | |||
} | |||
@media (max-width: 768px) { | |||
.map-frame iframe { | |||
height: 220px; | |||
} | |||
.action-buttons { | |||
grid-template-columns: 1fr; | |||
} | |||
.action-btn { | |||
width: 100%; | |||
min-height: 48px; | |||
font-size: 14px; | |||
} | |||
.action-btn span { | |||
white-space: normal; | |||
} | |||
} | |||
@media (prefers-reduced-motion: reduce) { | |||
.action-btn, | |||
.action-btn::before { | |||
transition: none; | |||
animation: none !important; | |||
} | |||
.action-btn:hover, | |||
.action-btn:focus-visible, | |||
.action-btn:active { | |||
transform: none; | |||
} | |||
.action-btn:hover::before, | |||
.action-btn:focus-visible::before { | |||
opacity: 0; | |||
} | |||
} | |||
</style> | |||
</head> | |||
<body> | |||
<main class="location-card"> | |||
<section aria-label="نقشه موقعیت"> | |||
<div class="map-frame"> | |||
<div id="osm-map-container"> | |||
<iframe | |||
id="dynamic-map" | |||
loading="lazy" | |||
referrerpolicy="no-referrer-when-downgrade" | |||
title="نقشه موقعیت" | |||
aria-label="نقشه موقعیت مکانی" | |||
></iframe> | |||
</div> | |||
<script> | |||
const lat = 35.515761827084475; | |||
const lon = 51.15124735976357; | |||
const zoomLevel = 0.005; | |||
const minLon = lon - zoomLevel; | |||
const minLat = lat - zoomLevel; | |||
const maxLon = lon + zoomLevel; | |||
const maxLat = lat + zoomLevel; | |||
const mapUrl = `https://www.openstreetmap.org/export/embed.html?bbox=${minLon},${minLat},${maxLon},${maxLat}&layer=mapnik&marker=${lat},${lon}`; | |||
document.getElementById("dynamic-map").src = mapUrl; | |||
</script> | |||
</div> | |||
</section> | |||
<nav class="action-buttons" aria-label="راههای ارتباطی و دسترسی"> | |||
<a | |||
href="https://neshan.org/maps/places/35.515761827084475,51.15124735976357" | |||
target="_blank" | |||
rel="noopener noreferrer" | |||
class="action-btn route-btn" | |||
title="مشاهده مسیر روی نقشه" | |||
aria-label="مسیریابی به این موقعیت" | |||
> | |||
<span>مسیریابی</span> | |||
</a> | |||
<a | |||
href="tel:09123005025" | |||
class="action-btn call-btn" | |||
title="تماس با این شماره" | |||
aria-label="تماس با شماره ۰۹۱۲۳۰۰۵۰۲۵" | |||
> | |||
<span>تماس</span> | |||
</a> | |||
<button | |||
type="button" | |||
class="action-btn share-btn" | |||
title="اشتراکگذاری لینک این صفحه" | |||
aria-label="اشتراکگذاری لینک صفحه" | |||
onclick="sharePage()" | |||
> | |||
<span>اشتراکگذاری</span> | |||
</button> | |||
</nav> | |||
</main> | |||
<script> | |||
async function sharePage() { | |||
const pageUrl = window.location.href; | |||
try { | |||
if (navigator.share) { | |||
await navigator.share({ | |||
title: document.title, | |||
url: pageUrl | |||
}); | |||
} else if (navigator.clipboard) { | |||
await navigator.clipboard.writeText(pageUrl); | |||
alert("لینک کپی شد!"); | |||
} else { | |||
alert("امکان اشتراکگذاری در این مرورگر در دسترس نیست."); | |||
} | |||
} catch (error) { | |||
console.error("Share failed:", error); | |||
} | |||
} | |||
</script> | |||
</body> | |||
</html> | </html> | ||