Использование slideUp и slideDown
Добрый вечер, необходимо чтобы слайд-панелька раскрывалась в зависимости от высоты содержимого.
Изначально делал ставку на animate {height: "100%"}, но тогда эффект плавного скольжение не применяется, с пикселями работает нормально Понял, что нужно использовать slideUp, slideDown и Toggle, но при внедрении их вместо animate панелька перестает открываться вовсе. Что необходимо изменить в коде, чтобы осуществить поставленную задачу? HTML: <script> $(document).ready(function(){ $("#show_answer").slideBox({width: "100%", height: "100%", position: "bottom"}); }); </script> </head> <body> <div id="show_answer"> <p><span class="letter_green">Пример 7.</span> Разделить число 1011011101001<sub>2</sub> на 1110011<sub>2</sub>.</p> <p><span class="letter_green">Решение:</span></p> <p><span class="letter_green">Ответ:</span> 1011011101001<sub>2</sub> / 1110011<sub>2</sub>=110011<sub>2</sub></p> </div> </body> </html> Cкрипт: (function($){ $.fn.slideBox = function(params){ var content = $(this).html(); var defaults = { width: "100%", height: "100%", position: "bottom" // Возможные значения : "top", "bottom" } if(params) $.extend(defaults, params); var divPanel = $("<div class='slide-panel'>"); var divContent = $("<div class='content'>"); $(divContent).html(content); $(divPanel).addClass(defaults.position); $(divPanel).css("width", defaults.width); // Добавляем кнопку $(divPanel).append("<div class='slide-button'><b>Посмотреть решение</b></div>"); $(divPanel).append("<div style='display: none' id='close-button' class='slide-button'><b>Спрятать решение</b></div>"); if(defaults.position == "bottom") $(divPanel).append($(divContent)); $(this).replaceWith($(divPanel)); //Действие по нажатию кнопки $(".slide-button").click(function(){ if($(this).attr("id") == "close-button") $(divContent).animate({height: "0px"}, 1000); else $(divContent).animate({height: defaults.height}, 1000); $(".slide-button").toggle(); }); }; })(jQuery); Ну и CSS на всякий .slide-panel { position:absolute; /*position:fixed*/ } /*.bottom {bottom: 0;} .top {top: 0;} для положения формы на странице*/ .content { border: 1px solid #dcdcdc; font: normal 14px Arial,Helvetica,Sans-serif; overflow: hidden; height: 0; width: 80%; margin-left: 10px; } .slide-button { font: normal 14px Arial,Helvetica,Sans-serif; cursor: pointer; position: relative; width: 180px; height: 25px; line-height: 25px; text-align: center; border: 1px solid #87a36c; margin-bottom: 8px; padding: 5px; border-radius: 3px; background: #97BA78; color: #ffffff; } .slide-button:hover { background: #9cbf7c; /*a0c480*/ border: 1px solid #8ba86f; } |
Открывашка плагин для блоков
SilverMountain,
:write: <!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> body{ background: #8FBC8B } .slide-panel{ overflow:hidden; width: 450px; margin: 0px auto; } .slide-panel .content{ border-radius:10px; border:#8B4513 4px solid; padding:5px; background:#FFA500; } .slide-panel .slide-button{ margin: 0px 1%; text-align: center; display:inline-block; color:#fff; text-decoration:none; text-shadow:1px 1px 1px #000; background:#ff8a2b; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffc154', endColorstr='#ff8a2b'); background:-webkit-gradient(linear,left top,left bottom,from(#ffc154),to(#ff8a2b)); background:-moz-linear-gradient(top,#ffc154,#ff8a2b); background:gradient(linear,top,#ffc154,#ff8a2b); border:1px solid #ff8a2b; border-radius:10px; } .slide-button { font: normal 14px Arial,Helvetica,Sans-serif; cursor: pointer; position: relative; width: 180px; height: 25px; line-height: 25px; text-align: center; border: 1px solid #87a36c; margin-bottom: 8px; padding: 5px; border-radius: 3px; background: #97BA78; color: #ffffff; } .slide-button:hover { background: #D2691E; border: 1px solid #8ba86f; } .br{ height: 100px; } </style> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script> $(function () { (function ($) { $.fn.slideBox = function (params) { var defaults = { position: "top", // Возможные значения : "top", "bottom" text: ["Подробнее...", "Скрыть..."], show: true } if (params) $.extend(defaults, params); return this.each(function (index, self) { $(self).addClass("content"); var divPanel = $("<div/>", { "class": "slide-panel" }); $(self).wrap(divPanel); var button = $("<a/>", { "href": "#", "class": "slide-button", "text": defaults.text[+defaults.show] }); (defaults.position == "bottom") ? button.insertAfter($(self)) : button.insertBefore($(self)); var n = +defaults.show; button.click(function (event) { event.preventDefault(); n = ++n % 2; $(this).text(defaults.text[n]) $(self).stop(true,true).slideToggle("slow"); }); !defaults.show && $(self).css({ "display": "none" }) }) }; })(jQuery); $("#show_answer").slideBox({ show: false, position: "bottom", text: ["Посмотреть решение", "Спрятать решение"] }); $(".answer").slideBox({}); }) </script> </head> <body> <div id="show_answer"> <p><span class="letter_green">Пример 7.</span> Разделить число 1011011101001<sub>2</sub> на 1110011<sub>2</sub>.</p> <p><span class="letter_green">Решение:</span></p> <p><span class="letter_green">Ответ:</span> 1011011101001<sub>2</sub> / 1110011<sub>2</sub>=110011<sub>2</sub></p> </div> <p class="br"></p> <div class="answer"> <p><span class="letter_green">Пример 7.</span> Разделить число 1011011101001<sub>2</sub> на 1110011<sub>2</sub>.</p> <p><span class="letter_green">Решение:</span></p> <p><span class="letter_green">Ответ:</span> 1011011101001<sub>2</sub> / 1110011<sub>2</sub>=110011<sub>2</sub></p> </div> </body> </html> |
Часовой пояс GMT +3, время: 01:12. |