нужны предложения по плагину jquery для закругленных углов - PullRequest
5 голосов
/ 20 июня 2009

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

Закругленные углы, которые я взял от здесь . Мне нравится этот образец, так как он не использует изображения, будет легко изменить цвет полей.

Полагаю, у меня проблемы с тем, как лучше обернуть свой мозг. У меня есть очень грубый образец, который вроде работает, но он просто не подходит. Часть, которая меня вешает, - это построение закругленных углов вокруг области контента. Прямо сейчас он берет поле «контент» и добавляет углы вокруг него. Каковы лучшие способы сделать это?

Вот вызов для создания поля - $ ('# content'). Roundbox ();

Если этой информации недостаточно, дайте мне знать.

//
(function($)
{
jQuery.fn.roundbox = function(options)
{

    var opts = $.extend({}, $.fn.roundbox.defaults, options);

    var outer = $("<div>");
    var topBorder = $("<b class='xtop'><b class='xb1'></b><b class='xb2'></b><b class='xb3'></b><b class='xb4'></b></b>");
    var bottomBorder = $("<b class='xbottom'><b class='xb4'></b><b class='xb3'></b><b class='xb2'></b><b class='xb1'></b></b>");
    var title = $("<h1>Select Funding</h1>");
    var separator = $("<div></div>");

    $(this).append(title);
    $(this).append(separator);

    var firstElement = $(this).children()[0];
    if (firstElement != null)
    {
        title.insertBefore(firstElement);
        separator.insertBefore(firstElement);
    }

    outer.append(topBorder);
    outer.append($(this));
    outer.append(bottomBorder);

    $("#fundingAdminContainer").append(outer);


    //Add classes
    outer.addClass(opts.outerClass); //outer container
    $(this).addClass(opts.contentClass); //inner content
    title.addClass(opts.titleClass); //roundbox title
    separator.addClass(opts.lineClass); //line below title
};

$.fn.roundbox.defaults =
{
    outerClass: 'roundbox',
    contentClass: 'roundboxContent',
    titleClass: 'roundboxTitle',
    lineClass: 'roundboxLine'
};


})(jQuery);


//CSS
.roundbox
{
float:left;
width:400px;
margin-right:20px;
}

.roundboxContent
{
display:block;
background:#ffffff;
border:0 solid #D4E2FE;
border-width:0 1px;
height:180px;
padding:10px;
}

.roundboxLine
{
background: url(../images/fundingAdmin_line.gif);
background-repeat:no-repeat;
height:5px;
}

.roundboxTitle
{
font-size:1.3em; color:#17A2D3;
}

.xtop, .xbottom {display:block; background:transparent; font-size:1px;}
.xb1, .xb2, .xb3, .xb4 {display:block; overflow:hidden;}
.xb1, .xb2, .xb3 {height:1px;}
.xb2, .xb3, .xb4 {background:#ffffff; border-left:1px solid #D4E2FE; border-right:1px solid #D4E2FE;}
.xb1 {margin:0 5px; background:#D4E2FE;}
.xb2 {margin:0 3px; border-width:0 2px;}
.xb3 {margin:0 2px;}
.xb4 {height:2px; margin:0 1px;}

Окончательная структура коробки должна быть:

<div id="fundingAdminContainer"><!-- Not part of rounded box, just serves as a container. -->
    <div class="roundbox">
        <b class="xtop"><b class="xb1"></b><b class="xb2"></b><b class="xb3"></b><b class="xb4"></b></b>
        <div id="content" class="roundboxContent">
            <h1 class="roundboxTitle">Title</h1>
            <div class="roundboxLine"></div>
                //CONTENT
        </div>
        <b class="xbottom"><b class="xb4"></b><b class="xb3"></b><b class="xb2"></b><b class="xb1"></b></b>
    </div>
</div>

Ответы [ 5 ]

2 голосов
/ 22 июня 2009

http://www.curvycorners.net/ http://www.curvycorners.net/

библиотека javascript, не плагин jQuery, но, похоже, работает: D

1 голос
/ 22 июня 2009

Это отлично:

http://jrc.rctonline.nl/

Он использует Canvas, поэтому он очень гибкий.

1 голос
/ 21 июня 2009

вот альтернативный плагин изогнутого угла jquery

http://labs.parkerfox.co.uk/cornerz/

1 голос
/ 20 июня 2009

То, как ты это делаешь, мне кажется хорошим. Хотя я бы не стал жестко закодировать этот материал.

Вы можете сделать заголовок и разделитель опциями для функции, и вместо добавления к #fundingAdminContainer вы можете сделать

outer.insertBefore($(this));

перед добавлением $ (this) к внешнему.

РЕДАКТИРОВАТЬ: Этот ответ довольно старый, и я бы сказал, устарел. Большинство браузеров теперь поддерживают закругленные углы через свойство border-radius CSS или, по крайней мере, альтернативу для конкретного браузера. Я также сказал бы, что в большинстве случаев это даже не стоит дополнительных js, необходимых для полифилирования углов округления для старых браузеров, которые не поддерживают CSS (конечно, это мнение). Поэтому, если бы я дал полный ответ, я бы сказал, просто используйте this и делайте то, что он вам говорит:).

Но если вы действительно хотите, чтобы ваши закругленные углы были в this , чтобы вы все равно могли использовать только CSS в большинстве браузеров, и только IE должен выполнять какую-либо дополнительную работу ( в файле htc), чтобы закруглить углы.

Единственная проблема с ним заключается в том, что htc-файл также устарел и должен быть изменен, чтобы проверить наличие границы-радиуса, используя что-то вроде this . Htc это просто JS. Это избавит IE9 от необходимости выполнять DS-манипуляции с JS.

0 голосов
/ 03 января 2014

Этот jQuery Corner плагин может быть полезным. Прост в использовании и удивителен.

http://jquery.malsup.com/corner/

Использование

$('#myDiv').corner();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...