Подскажите что можно оптимизировать show\hide
Всем привет. Сделал скрытие\показ при нажатии на кнопку, но понял что в таком виде код будет слишком большим и наверняка есть более простой способ реализовать это. Если кому не сложно посмотрите и подскажите что изменить или добавить.
http://codepen.io/nojee/pen/GNNpay <html><head> <style> #box2,#box3 {display:none;} </style> <script> function hide(){ document.getElementById("box1").style.display = 'none'; document.getElementById("box2").style.display = 'none'; document.getElementById("box3").style.display = 'none'; } function showbox1(){ document.getElementById('box1').style.display = 'block'; } function showbox2(){ document.getElementById('box2').style.display = 'block'; } function showbox3(){ document.getElementById('box3').style.display = 'block'; } </script> </head> <body> <div class="mainbar"> <div id="box1"> <h2>TEST1</h2> <p>Текст№1</p> </div> <div id="box2"> <h2>TEST2</h2> <p>Текст№2</p> </div> <div id="box3"> <h2>TEST3</h2> <p>Текст№3</p> </div> </div> <input type="button" onclick="hide(), showbox1()" value="test 1" /> <input type="button" onclick="hide(), showbox2()" value="test 2" /> <input type="button" onclick="hide(), showbox3()" value="test 3" /> </body> </html> Желательно на чистом js, без использования библиотек. |
Njeee,
форум поиск открывашка |
Огромное спасибо, если бы знал что именно искать нужно "открывашку":)
|
Нашел нужную реализацию, как раз то что я искал! Но если нажать на любую точку вне выводимого блока, блок исчезает. Можно как то убрать это?
http://codepen.io/nojee/pen/GNNpay function init() { var form = document.querySelectorAll('.box'), tel = document.querySelectorAll('.openbox'), open; document.onclick = function(event) { var elem = event.target; if (open && (elem === open || open.contains(elem))) return false; if (elem.classList.contains('openbox')) { for (var i = 0; i < tel.length; i++) { if (elem === tel[i]) break } if (open && open !== form[i]) open.classList.remove("show"); open = form[i]; open.classList.toggle("show"); return false; } open && open.classList.remove("show"); } } window.onload = init; Хотелось бы что бы скрипт реагировал только на кнопки. |
Njeee,
<!DOCTYPE html><html class=''> <head> <meta charset="utf-8"> <style class="cp-pen-styles">.box.show { visibility: visible; opacity: 1; } .box{ background-color: green; display: inline-block; left: 50%; opacity: 0; padding: 15px; width: 300px; height: 323px; position: fixed; text-align: justify; top: 40%; visibility: hidden; z-index: 999999; -webkit-transform: translate(-50%, -50%); -moz-transform: translate(-50%, -50%); -ms-transform: translate(-50%, -50%); -o-transform: translate(-50%, -50%); transform: translate(-50%, -50%); -webkit-transition: opacity .5s, top .5s; -moz-transition: opacity .5s, top .5s; -ms-transition: opacity .5s, top .5s; -o-transition: opacity .5s, top .5s; transition: opacity .5s, top .5s; border-radius: 11px; }</style></head><body> <html><head> <script> function init() { var form = document.querySelectorAll('.box'), tel = document.querySelectorAll('.openbox'), open; document.onclick = function(event) { var elem = event.target; if (elem.classList.contains('openbox')) { for (var i = 0; i < tel.length; i++) { if (elem === tel[i]) form[i].classList.toggle("show") else form[i].classList.remove("show") } return false; } } } window.onload = init; </script> </head> <body> <div class="mainbar"> <div class="box"> <h2>TEST1</h2> <p>Текст№1</p> </div> <div class="box"> <h2>TEST2</h2> <p>Текст№2</p> </div> <div class="box"> <h2>TEST3</h2> <p>Текст№3</p> </div> </div> <a href="#" class="openbox">test 1</a> <a href="#" class="openbox">test 2</a> <a href="#" class="openbox">test 3</a> </body> </html> </body></html> |
рони, большое спасибо!
|
Часовой пояс GMT +3, время: 09:20. |