From a7ebb7bbaa73aa86c9e212ef80d183b4b89c9280 Mon Sep 17 00:00:00 2001 From: Jakub Pawlowicz Date: Sat, 30 May 2015 08:04:43 +0100 Subject: [PATCH] Fixes #587 - too aggressive `border` reordering. Not all border reordering cases were covered correctly. --- History.md | 1 + lib/selectors/extractor.js | 6 +++- lib/selectors/reorderable.js | 5 +++ test/fixtures/big-min.css | 55 +++++++++++++++-------------- test/fixtures/bootstrap-min.css | 50 +++++++++++++------------- test/selectors/extractor-test.js | 22 ++++++++++-- test/selectors/optimizer-test.js | 4 +++ test/selectors/reorderable-test.js | 56 ++++++++++++++++++++++++++++++ 8 files changed, 145 insertions(+), 54 deletions(-) diff --git a/History.md b/History.md index 773172e97..b45791bd0 100644 --- a/History.md +++ b/History.md @@ -4,6 +4,7 @@ * Fixed issue [#563](https://github.com/jakubpawlowicz/clean-css/issues/563) - `background:inherit` restoring. * Fixed issue [#582](https://github.com/jakubpawlowicz/clean-css/issues/582) - overriding with prefixed values. * Fixed issue [#583](https://github.com/jakubpawlowicz/clean-css/issues/583) - URL quoting for SVG data. +* Fixed issue [#587](https://github.com/jakubpawlowicz/clean-css/issues/587) - too aggressive `border` reordering. [3.2.10 / 2015-05-14](https://github.com/jakubpawlowicz/clean-css/compare/v3.2.9...v3.2.10) ================== diff --git a/lib/selectors/extractor.js b/lib/selectors/extractor.js index 08ae0ca8c..2506d6cc3 100644 --- a/lib/selectors/extractor.js +++ b/lib/selectors/extractor.js @@ -46,8 +46,12 @@ function findNameRoot(name) { return name; if (name.indexOf('-radius') > 0) return 'border-radius'; - if (name.indexOf('border-') === 0) + if (name == 'border-collapse' || name == 'border-spacing' || name == 'border-image') + return name; + if (name.indexOf('border-') === 0 && /^border\-\w+\-\w+$/.test(name)) return name.match(/border\-\w+/)[0]; + if (name.indexOf('border-') === 0 && /^border\-\w+$/.test(name)) + return 'border'; if (name.indexOf('text-') === 0) return name; diff --git a/lib/selectors/reorderable.js b/lib/selectors/reorderable.js index 18b1dba85..286b63d8e 100644 --- a/lib/selectors/reorderable.js +++ b/lib/selectors/reorderable.js @@ -1,6 +1,7 @@ // TODO: it'd be great to merge it with the other canReorder functionality var FLEX_PROPERTIES = /align\-items|box\-align|box\-pack|flex|justify/; +var BORDER_PROPERTIES = /^border\-(top|right|bottom|left|color|style|width)/; function canReorder(left, right) { for (var i = right.length - 1; i >= 0; i--) { @@ -31,6 +32,10 @@ function canReorderSingle(left, right) { return false; if (leftNameRoot == rightNameRoot && unprefixed(leftName) == unprefixed(rightName) && (vendorPrefixed(leftName) ^ vendorPrefixed(rightName))) return false; + if (leftNameRoot == 'border' && BORDER_PROPERTIES.test(rightNameRoot) && (leftName == 'border' || leftName == rightNameRoot)) + return false; + if (rightNameRoot == 'border' && BORDER_PROPERTIES.test(leftNameRoot) && (rightName == 'border' || rightName == leftNameRoot)) + return false; if (leftNameRoot != rightNameRoot) return true; if (leftName == rightName && leftNameRoot == rightNameRoot && (leftValue == rightValue || withDifferentVendorPrefix(leftValue, rightValue))) diff --git a/test/fixtures/big-min.css b/test/fixtures/big-min.css index 3700056db..4671b109b 100644 --- a/test/fixtures/big-min.css +++ b/test/fixtures/big-min.css @@ -1,6 +1,5 @@ /*! normalize.css 2012-01-31T16:06 UTC - http://github.com/necolas/normalize.css */ small,sub,sup{font-size:75%} -.alpha,.ie .une_normale .liste_carre_999.liste_une .ie_impair,.liste_carre_999.liste_une li:nth-child(2n+3){clear:left} article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block} audio,canvas,video{display:inline-block} [hidden],audio:not([controls]){display:none} @@ -85,7 +84,7 @@ table{border-spacing:0;border-collapse:collapse} .ie .txt10{font-size:10px} .container_18{margin:0 13px;width:974px} .grid_1,.grid_10,.grid_11,.grid_12,.grid_13,.grid_14,.grid_15,.grid_16,.grid_17,.grid_18,.grid_2,.grid_3,.grid_4,.grid_5,.grid_6,.grid_7,.grid_8,.grid_9{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;display:inline;float:left;position:relative;margin-left:8px;margin-right:8px} -.alpha{margin-left:0} +.alpha{margin-left:0;clear:left} .omega{margin-right:0;clear:right} .container_18 .grid_1{width:39px} .container_18 .grid_2{width:94px} @@ -176,6 +175,7 @@ table{border-spacing:0;border-collapse:collapse} .container_18 .pull_17{left:-935px} .clear{overflow:hidden} .clearfix:after{clear:both;content:' ';font-size:0;line-height:0} +.ie .une_normale .liste_carre_999.liste_une .ie_impair,.liste_carre_999.liste_une li:nth-child(2n+3){clear:left} * html .clearfix{height:1%} .clearfix{display:block} html{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;font-size:62.5%} @@ -196,7 +196,6 @@ article,figure,section{overflow:hidden} section article{margin:0 0 16px} .img_bord,article img,figure img{border:1px solid #eef1f5;vertical-align:bottom} .invisible{border:none;background:0 0} -.bord1_gris,.bord1_gris_clair{border:1px solid #eef1f5} .gras{font-weight:700} .caps{text-transform:uppercase} .centrer{text-align:center} @@ -243,10 +242,11 @@ section article{margin:0 0 16px} .bord_top3_gris{border-top:3px solid #e9edf0;padding-top:15px} .bord_top3_politique{border-top:3px solid #1f0d67} .bord_bot3_gris{border-bottom:3px solid #e9edf0} +.bord1_gris{border:1px solid #eef1f5} .bord_lrb1_gris_clair{border-left:1px solid #eef1f5;border-right:1px solid #eef1f5;border-bottom:1px solid #eef1f5} -.az,.global.bloc_groupe div,.titre_bt_fleche .bt{border-left:1px solid #e4e6e9} .bord_top1_gris{border-top:1px solid #e9edf0;padding-top:10px} .bord_bot1_gris{border-bottom:1px solid #e9edf0;padding-bottom:10px} +.bord1_gris_clair{border:1px solid #eef1f5} .bord_double_gris_blanc{line-height:25px;font-size:12px;display:inline-block;border:solid #d2d6db;border-width:1px 0} .bord_double_gris_blanc span{display:inline-block;border:solid #fff;border-width:1px 0} .bloc_abo{border-top:3px solid #ffd500} @@ -258,7 +258,7 @@ img[width="202"]{margin-bottom:4px} .btn.large{width:100%;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box} .btn_petit{padding:2px 4px;font-size:11px;line-height:16px} .btn:hover,.btn_abo:hover,.btn_fonce:hover,.btn_petit:hover{background-position:0 -15px;transition:background-position .1s linear} -.btn:hover,.btn_abo:hover,.btn_fonce:hover,.btn_petit:hover,.conteneur_pagination .next:hover,.conteneur_pagination .prev:hover{text-decoration:none;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-ms-transition:background-position .1s linear;-o-transition:background-position .1s linear} +.btn:hover,.btn_abo:hover,.btn_fonce:hover,.btn_petit:hover,.conteneur_pagination .next:hover,.conteneur_pagination .prev:hover{-o-transition:background-position .1s linear;text-decoration:none;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-ms-transition:background-position .1s linear} .btn:hover,.btn_petit:hover{color:#2e3942;background-color:#e6e6e6} .btn.active,.btn.disabled,.btn.disabled:hover,.btn:active,.btn[disabled],.btn_petit.active,.btn_petit:active,.btn_petit[disabled],input[type=submit].disabled{background-color:#e6e6e6;color:#d2d6db} .btn.disabled:hover,input[type=submit].disabled{background-image:none;background-color:#e6e6e6;cursor:default} @@ -272,6 +272,7 @@ img[width="202"]{margin-bottom:4px} .btn_abo:active{background-color:#ffc600} input.btn,input.btn_abo,input.btn_fonce,input.btn_petit{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box} button::-moz-focus-inner,input[type=submit]::-moz-focus-inner{padding:0;border:0} +.az,.titre_bt_fleche .bt{border-left:1px solid #e4e6e9} .bt_abo{display:inline-block;padding:3px 12px;background:#ffd500;font-weight:700;color:#650} .bt_abo:hover{background:#ffc600;color:#000;font-weight:700;cursor:pointer;text-decoration:none} .fleuve .liens .permalien:hover,.lien_chaine a:hover,.lien_chaine span:hover{text-decoration:underline} @@ -399,12 +400,12 @@ article .liste_carre_999{margin-top:5px} .global .bloc_droit strong{display:block;height:31px;overflow:hidden} .global .bloc_droit+.bloc_droit{margin:16px 0 0} .col_droite .supplement_partenaire,.global .supplement_partenaire{margin-top:16px;overflow:hidden;border:1px solid #e9edf0;color:#5d666d} -.col_droite .supplement_partenaire .contenu .img img,.global .supplement_partenaire .contenu .img img,.global.supp_partenaires img{border:1px solid #eef1f5} .col_droite .supplement_partenaire.entete,.global .supplement_partenaire .entete{height:25px;padding:0 16px;border-bottom:1px solid #e9edf0;font-size:13px;line-height:24px;font-weight:700} .col_droite .supplement_partenaire.entete .marqueur_pub,.global .supplement_partenaire .entete .marqueur_pub{float:right;display:inline-block;width:43px;height:5px;margin-top:10px;background:url(/medias/web/img/textes/marqueur_pub_gris43x5.png);text-indent:-9999px;font-size:9px;text-transform:uppercase} .col_droite .supplement_partenaire .contenu,.global .supplement_partenaire .contenu{overflow:hidden;padding:16px 15px} .global .supplement_partenaire .contenu{height:66px} .col_droite .supplement_partenaire .contenu .img,.global .supplement_partenaire .contenu .img{float:left;width:63px} +.col_droite .supplement_partenaire .contenu .img img,.global .supplement_partenaire .contenu .img img{border:1px solid #eef1f5} .col_droite .supplement_partenaire .contenu .annonce,.global .supplement_partenaire .contenu .annonce{float:left;margin-left:10px;width:209px} .col_droite .supplement_partenaire .annonce .accroche,.global .supplement_partenaire{display:block;margin-bottom:5px;font-weight:700} .global .bloc_bandeau .bandeau,.global .bloc_droit .bandeau{padding:0 16px;margin:0;font-size:17px;line-height:26px;color:#fff;text-transform:uppercase} @@ -419,7 +420,7 @@ article .liste_carre_999{margin-top:5px} .global.bloc_groupe .entete_deroule{margin:0;border-bottom:1px solid #b9c0c5} .global.bloc_groupe .logo{overflow:hidden;clear:left;display:block;height:31px;line-height:31px;background:#f1f5f8} .global.bloc_groupe .logo a{display:inline-block;vertical-align:middle} -.global.bloc_groupe div{width:332px;float:left;border-right:1px solid #fff} +.global.bloc_groupe div{width:332px;float:left;border-right:1px solid #fff;border-left:1px solid #e4e6e9} .ie .global.bloc_groupe div{width:331px} .ie .global.bloc_groupe div:first-child{width:333px} .global.bloc_groupe div figure,.global.bloc_groupe div p{padding:10px 16px 6px;margin:0} @@ -459,6 +460,7 @@ article .liste_carre_999{margin-top:5px} .global.supp_partenaires .position_pub div~div~div{width:330px} .global.supp_partenaires .position_pub div p+p{width:174px;float:left} .global.supp_partenaires .conteneur_img{float:left;margin:0 16px 0 0} +.global.supp_partenaires img{border:1px solid #eef1f5} .une_revolutionnaire .tt40{text-align:center} .une_revolutionnaire h1+p{margin:0 0 8px;text-align:center} .une_revolutionnaire .titres{margin:18px 0 8px} @@ -599,6 +601,7 @@ img[height="97"]+.ico29x29{bottom:6%;left:3.5%} .conteneur_pagination{background:#f8f9fb;font-weight:700;border:1px solid #d2d6db;border-radius:4px;height:26px;margin-top:20px} .pagination_large{margin-top:10px} .pagination .adroite{float:right} +.pagination .page{border:solid #e4e6e9;border-width:0 0 0 1px} .conteneur_pagination .next,.conteneur_pagination .prev{display:block;float:left;width:27px;height:26px;text-shadow:0 1px 1px rgba(255,255,255,.75);background-color:#fafafa;background-image:-webkit-gradient(linear,0 0,0 100%,from(#fefefe),color-stop(25%,#fefefe),to(#e4e6e9));background-image:-webkit-linear-gradient(#fefefe,#fefefe 25%,#e4e6e9);background-image:-moz-linear-gradient(left,#fefefe,#fefefe 25%,#e4e6e9);background-image:-ms-linear-gradient(#fefefe,#fefefe 25%,#e4e6e9);background-image:-o-linear-gradient(#fefefe,#fefefe 25%,#e4e6e9);background-image:linear-gradient(#fefefe,#fefefe 25%,#e4e6e9);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fefefe', endColorstr='#e4e6e9', GradientType=0);text-align:center;line-height:26px;font-size:15px;color:#2e3942} .pagination .page,.pagination .plus ul .page{text-align:center;line-height:26px;font-size:12px} .conteneur_pagination .next:hover,.conteneur_pagination .prev:hover{color:#2e3942;background-color:#e4e6e9;background-position:0 -15px;transition:background-position .1s linear} @@ -614,7 +617,7 @@ img[height="97"]+.ico29x29{bottom:6%;left:3.5%} .pagination li{display:block;float:left} .pagination>li{background:#f8f9fb} .pagination>li:hover{background:#e4e6e9} -.pagination .page{border:solid #e4e6e9;border-width:0 0 0 1px;display:block;float:left;padding:0 9px;height:26px;border-left:1px solid #e4e6e9} +.pagination .page{display:block;float:left;padding:0 9px;height:26px;border-left:1px solid #e4e6e9} .pagination>li>a,.pagination>li>span{color:#5d666d} .pagination .page.actif{height:28px;margin-top:-1px;padding-top:1px;background:#fff;border-color:#fff;color:#b9c0c5} .pagination .plus{position:relative} @@ -713,10 +716,11 @@ img[height="97"]+.ico29x29{bottom:6%;left:3.5%} #header_facebook,#header_google,#header_twitter{position:relative} .conteneur_popinbox{position:absolute;z-index:10;top:20px;left:-145px;padding:11px 0 0;-webkit-box-shadow:-1px 4px 3px -2px rgba(0,11,21,.5);-moz-box-shadow:-1px 4px 3px -2px rgba(0,11,21,.5);box-shadow:-1px 4px 3px -2px rgba(0,11,21,.5);background:url(/medias/web/img/habillage/lightbox_sociaux_coche.png)center top no-repeat;display:none} #header,.position_pub:hover{z-index:3} +#barre_titre,#header,#nav,#surheader .services li,.carrousel,.carrousel .elt,.conteneur_carrousel,.position_pub{position:relative} .popinbox{padding:10px;background:#fff;overflow:visible} .sociaux .popinbox{width:292px;text-indent:0} #header_facebook_contenu{position:relative;height:258px} -.position_pub{position:relative;line-height:0} +.position_pub{line-height:0} .position_pub.bottom2{width:1000px;margin:0 auto;text-align:center} .position_pub.bottom2.filled{margin:16px auto} .position_pub.top{width:1000px;min-height:16px;margin:0 auto} @@ -727,9 +731,9 @@ img[height="97"]+.ico29x29{bottom:6%;left:3.5%} .col_droite .position_pub.filled.noborder{background:0 0;padding:0} .conteneur_ligatus{margin:25px 0} .conteneur_ligatus *{vertical-align:bottom} -.conteneur_carrousel{position:relative;overflow:hidden;height:321px} -.carrousel{width:6000px;position:relative} -.carrousel .elt{width:644px;float:left;position:relative} +.conteneur_carrousel{overflow:hidden;height:321px} +.carrousel{width:6000px} +.carrousel .elt{width:644px;float:left} .conteneur_carrousel .navigation{text-align:center;clear:both;-webkit-user-select:none} .conteneur_carrousel .navigation .precedent,.conteneur_carrousel .navigation .precedent span,.conteneur_carrousel .navigation .repere,.conteneur_carrousel .navigation .reperes,.conteneur_carrousel .navigation .suivant,.conteneur_carrousel .navigation .suivant span{display:inline-block;vertical-align:middle} .conteneur_carrousel .navigation .reperes{display:inline;background:0 0} @@ -749,11 +753,11 @@ img[height="97"]+.ico29x29{bottom:6%;left:3.5%} .portfolio_appel_revolutionnaire.conteneur_carrousel .navigation .precedent,.portfolio_appel_revolutionnaire.conteneur_carrousel .navigation .suivant{position:absolute;top:0;left:0;width:165px;height:322px;background:#000;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";background:rgba(0,0,0,.6)} .portfolio_appel_revolutionnaire.conteneur_carrousel .navigation .precedent:hover,.portfolio_appel_revolutionnaire.conteneur_carrousel .navigation .suivant:hover{cursor:pointer} .portfolio_appel_revolutionnaire.conteneur_carrousel .navigation .precedent span,.portfolio_appel_revolutionnaire.conteneur_carrousel .navigation .suivant span{display:block;margin:111px 0 0;text-indent:0;font-size:72px;width:40px;height:100px;line-height:95px;text-align:center;background:#fff;background:-moz-linear-gradient(left,#eee 0,#fff 50%,#fff 100%);background:-webkit-gradient(linear,left center,right center,color-stop(0,#eee),color-stop(50%,#fff),color-stop(100%,#fff));background:-webkit-linear-gradient(left,#eee 0,#fff 50%,#fff 100%);background:-o-linear-gradient(left,#eee 0,#fff 50%,#fff 100%);background:-ms-linear-gradient(left,#eee 0,#fff 50%,#fff 100%);background:linear-gradient(left,#eee 0,#fff 50%,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0 );border:solid #ddd;border-width:0 0 0 1px;box-shadow:0 0 1px 1px #000;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=20)";opacity:.2;-webkit-transition:opacity 1s;-moz-transition:opacity 1s;-o-transition:opacity 1s;transition:opacity 1s} +#surheader .droit .services>li,#surheader .gauche a,#surheader .gauche span{border-left:1px solid #626a72;border-right:1px solid #16212c} .portfolio_appel_revolutionnaire.conteneur_carrousel .navigation .suivant span{border-width:0 1px 0 0;margin:111px 0 0 124px;background:-moz-linear-gradient(left,#fff 0,#fff 55%,#eee 100%);background:-webkit-gradient(linear,left center,right center,color-stop(0,#fff),color-stop(55%,#fff),color-stop(100%,#eee));background:-webkit-linear-gradient(left,#fff 0,#fff 55%,#eee 100%);background:-o-linear-gradient(left,#fff 0,#fff 55%,#eee 100%);background:-ms-linear-gradient(left,#fff 0,#fff 55%,#eee 100%);background:linear-gradient(left,#fff 0,#fff 55%,#eee 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0 )} .portfolio_appel_revolutionnaire.conteneur_carrousel .navigation .precedent:hover span,.portfolio_appel_revolutionnaire.conteneur_carrousel .navigation .suivant:hover span{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)";opacity:.9;color:#222} .portfolio_appel_revolutionnaire.conteneur_carrousel .navigation .suivant{left:auto;right:0} .portfolio_appel_revolutionnaire a .legende.bg_fonce{color:#fff} -#barre_titre,#header,#nav{position:relative} #header{font-size:12px;text-align:left} #barre-titre{z-index:2} #nav{z-index:1} @@ -763,16 +767,15 @@ img[height="97"]+.ico29x29{bottom:6%;left:3.5%} #surheader .droit{width:400px;float:right} #surheader .gauche{width:600px;float:left} #surheader a,#surheader span{color:#fff;font-size:11px} -#surheader .gauche a,#surheader .gauche span{display:block;float:left;padding:0 10px;border-left:1px solid #626a72;border-right:1px solid #16212c} +#surheader .gauche a,#surheader .gauche span{display:block;float:left;padding:0 10px} #surheader .gauche .actif,#surheader .gauche .obf:hover,#surheader .gauche a:hover{background:#000b15;color:#fff} #surheader .bt_abo{display:block;float:right;padding:0 16px;color:#000} #surheader .droit .services{float:right;height:25px} -#surheader .droit .services>li{border-left:1px solid #626a72;border-right:1px solid #16212c} #surheader .droit .services:hover>li>a,#surheader .droit .services>li:hover{border-right:1px solid #fff} #surheader .droit .services:hover{background:#fff} #surheader .droit .services>li>.obf{padding:0 10px;height:24px;line-height:24px} #surheader .droit .services:hover a{color:#000b15} -#surheader .services li{position:relative;line-height:25px} +#surheader .services li{line-height:25px} #surheader .services div{display:none;position:absolute;right:0;top:25px;-webkit-box-shadow:0 2px 4px rgba(0,11,21,.5);-moz-box-shadow:0 2px 4px rgba(0,11,21,.5);box-shadow:0 2px 4px rgba(0,11,21,.5);width:340px;z-index:10;background:#fff} #surheader .services.droite div{right:auto;left:0} #surheader .services li:hover div{display:block} @@ -844,8 +847,8 @@ label i{font-style:normal;display:none} .saisie_erreur label i{display:inline} .boite_formulaire .erreur{display:none} .loginbox .back{padding:0 15px;line-height:4rem;border-top:1px solid #d2d6db} -.loginbox .abonne_journal,.loginbox .signup{float:left;font-size:14px;line-height:140%;border-left:1px solid #e4e6e9} .loginbox #login_error_email{background:#f2dede;border:1px solid #c00;color:#c00;text-align:center} +.loginbox .abonne_journal,.loginbox .signup{float:left;font-size:14px;line-height:140%;border-left:1px solid #e4e6e9} .loginbox .signup{width:180px;height:230px;padding:10px 40px 10px 15px;border-right:1px solid #fff} .loginbox .accroche{display:block;margin:20px 0 15px;color:#464f57} .loginbox .abonne_journal{position:relative;width:185px;height:235px;padding:10px 55px 10px 16px;background:url(/medias/web/img/elements_lm/login_box_journal.jpg)right 130px no-repeat} @@ -963,7 +966,6 @@ label i{font-style:normal;display:none} .article_normal .illustration_haut figcaption .lien_interne{color:#fff} .article .auteur,.liste_reactions .btn span,.liste_reactions .intitule span{color:#747b83} .article_normal .illustration_haut img{border:none} -.grid_12 .bloc_base,.voir_aussi{border:solid #eef1f5;border-width:0 1px 1px} .liste_reactions{padding-top:10px;border-top:3px solid #ffd500} .liste_reactions .intitule{float:left;font-weight:700} .liste_reactions .entete{height:38px;padding:0 0 10px} @@ -1010,7 +1012,7 @@ label i{font-style:normal;display:none} .liste_reactions .regles_conduite{margin:20px 0 0} .liste_reactions .bloc_readaction ul{list-style-type:disc;margin:10px 15px;font-size:13px} .voir_aussi,.voir_aussi .az{font-weight:700;font-size:12px} -.grid_12 .bloc_base{margin:0 0 25px} +.grid_12 .bloc_base{margin:0 0 25px;border:solid #eef1f5;border-width:0 1px 1px} .grid_12 .bloc_base .entete{border-top:3px solid #16212c;display:block;padding:8px 16px 6px;font-weight:700} .grid_12 .bloc_base .contenu{padding:0 16px} .bloc_base.appel_temoignage,.bloc_base.meme_sujet{margin-top:16px} @@ -1018,7 +1020,7 @@ label i{font-style:normal;display:none} .meme_sujet .liste_chevron li{padding:8px 0} .meme_sujet .entete_exclu_abonnes{margin:8px 0} .meme_sujet .bt{margin:8px 0 0;text-align:center} -.voir_aussi{overflow:hidden;clear:both;margin:0 0 25px;color:#a2a9ae} +.voir_aussi{overflow:hidden;clear:both;margin:0 0 25px;border:solid #eef1f5;border-width:0 1px 1px;color:#a2a9ae} .voir_aussi .entrees_visible{overflow:hidden} .voir_aussi .intitule{float:left;padding:7px 9px 0} .voir_aussi .entrees{float:left;width:400px;height:33px;line-height:33px;padding:2px 0 0;overflow:hidden} @@ -1047,7 +1049,6 @@ label i{font-style:normal;display:none} .article .fb-like{height:25px;overflow:hidden;opacity:0} .bloc_part .saisie{background-color:#f8f9fb;border:1px solid #b9c0c5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;padding:2px 3px} .bloc_part{border:1px solid #eef1f5;overflow:hidden;line-height:120%;position:relative} -.bloc_part.leguide,.quotatis .contenu.bord_top1_gris{border:0} .services .bloc_part.grid_12,.services .bloc_part.grid_6{margin-left:16px;margin-right:0} .services .bloc_part.grid_6:first-child{margin-left:0} .col_droite .bloc_part{margin:0 0 25px} @@ -1121,6 +1122,7 @@ label i{font-style:normal;display:none} .bloc_part.immostreet .annonces .annonce,.bloc_part.la_centrale .annonces .annonce{padding-left:13px} .bloc_part.immostreet .annonces .annonce:first-child,.bloc_part.la_centrale .annonces .annonce:first-child{padding-left:0} .bloc_part.immostreet .recherche,.bloc_part.la_centrale .recherche{border-top:1px solid #eef1f5} +.bloc_part.leguide,.quotatis .contenu.bord_top1_gris{border:0} .bloc_part.immostreet .recherche .contenu,.bloc_part.la_centrale .recherche .contenu{padding-top:10px} .bloc_part.immostreet .recherche label{width:75px;margin:0 20px 0 0;font-size:11px;font-weight:700} .bloc_part.immostreet .recherche .saisie.cp{padding:0 7px;width:60px;height:19px;font-size:11px;line-height:15px} @@ -1563,7 +1565,7 @@ img.spacer{width:1px;height:1px} .txt-justify{text-align:justify} #header-liberation .header-base .nav .nav1 a:hover,#header-liberation .header-base .nav .nav2 li a:hover{text-decoration:none} #header-liberation hr{border:0;border-top:3px solid #e0e0e0} -#header-liberation .header-base{margin:0 10px;border-top:1px solid #e0e0e0} +#header-liberation .header-base{margin:0 10px} #header-liberation .header-base .digitalpaper,#header-liberation .header-base .home,#header-liberation .header-base .links,#header-liberation .header-base .sites-info-search{display:block;float:left} #header-liberation .header-base .home{width:196px} #header-liberation .header-base .home .logo{display:block} @@ -1706,6 +1708,7 @@ body.iframe{padding-top:0} .site-liberation .hot-topics h5{float:left;margin:0 0 0 21px;padding:5px 21px 5px 0;background:url(http://s0.libe.com/libe/img/common/bg-puce-losange.png?099dfb8021ab)center right no-repeat;text-transform:uppercase;font-size:12px} .site-liberation .hot-topics ul{float:left;margin:-1px 0 0 7px} .site-liberation .hot-topics li{display:block;float:left;padding:3px 7px 5px;margin:3px 10px 3px 0} +#header-liberation .header-base{border-top:1px solid #e0e0e0} #header-liberation .header-base .digitalpaper,#header-liberation .header-base .home,#header-liberation .header-base .links,#header-liberation .header-base .sites-info-search{height:120px} #header-liberation .header-base .home .logo{background:url(http://s0.libe.com/libe/img/common/logo-liberation-150.png?f613aa3caae2)no-repeat;width:150px;height:55px;margin-top:33px} #header-liberation .header-base .links{display:block;width:280px;height:110px;padding-top:10px} @@ -1806,6 +1809,7 @@ body.auth-unlogged #core-liberation .form-monlibe-unlogged form{opacity:.3;-ms-f #core-liberation .form-monlibe .monlibe-edit-profile p{clear:both} #core-liberation .form-monlibe .monlibe-edit-profile .btn-monlibe{margin-top:30px} #core-liberation .block-comments .form-monlibe{border-top:none} +.block-solid-c1 .block-bottom,.block-solid-c2 hr{border-top:1px solid} #core-liberation .block-comments .form-monlibe input[type=text],#core-liberation .block-comments .form-monlibe textarea{width:98%} #core-liberation .form-contacts{width:380px} #core-liberation .form-contacts p{margin-bottom:10px} @@ -1867,8 +1871,7 @@ body.auth-unlogged #core-liberation .form-monlibe-unlogged form{opacity:.3;-ms-f .block .block-content{padding:0} #core-liberation .block .block-bottom .pager{padding:6px 0 0} .block-solid-c1,.block-solid-c2{padding:10px} -.block-solid-c1 .block-bottom{border-top:1px solid} -.block-solid-c2 hr{border-left:0;border-right:0;border-top:1px solid;border-bottom:2px solid;margin:10px 0} +.block-solid-c2 hr{border-left:0;border-right:0;border-bottom:2px solid;margin:10px 0} .block-solid-c2 h5{font-weight:400} .col-contextual .block{margin:14px 0;padding:10px 14px 14px} .col-contextual .block.block-ad{width:auto} @@ -2122,7 +2125,6 @@ a.god:hover{background:#3c3c3c;color:#fff} #core-liberation .block-search-head form input[type=submit]:hover{background-image:url(http://s0.libe.com/libe/img/common/bg-search-formsubmit-on.png?21388ca68b89)} #core-liberation .block-search-results form input[type=submit]:active{background-image:url(http://s0.libe.com/libe/img/common/bg-search-formsubmit-active.png?16bd2d8fbc96)} #core-liberation .block-search-head .pagination{border-top:0} -#core-liberation .block-search-head .advanced,#core-liberation .pagination{border-top-color:#b7b7b7;border-top:1px dotted} #core-liberation .block-search-head .pagination a,#core-liberation .block-search-results .pagination a{background-color:#fff} #core-liberation .block-search-head .pagination .prev,#core-liberation .block-search-results .pagination .prev{margin-left:0;padding-left:17px} #core-liberation .block-search-head .pagination .next,#core-liberation .block-search-results .pagination .next{margin-right:0;padding-right:17px} @@ -2777,6 +2779,7 @@ body.slideshow .ad-top .megaban{background:#333} #core-liberation .block-search-head p.opinion span{color:#707070} #core-liberation .block-search-head p.opinion a{color:#e20000} #core-liberation .block-search-head .advanced .note .links,#core-liberation .block-search-head .advanced .note .links a,#core-liberation .block-search-head .advanced .note a.displayer,#core-liberation .block-search-head .results p{color:#87888a} +#core-liberation .block-search-head .advanced{border-top-color:#b7b7b7} #core-liberation .block-search-head .advanced .searchform .between,#core-liberation .block-search-head .advanced .searchform .category,#core-liberation .block-search-head .advanced .searchform .period,#core-liberation .block-search-head .advanced .searchform .source{border-bottom-color:#fff} #core-liberation .block-search-head .results{margin-bottom:15px} #core-liberation .block-search-head .results p.filters strong{color:#2e2e2e} @@ -2819,7 +2822,7 @@ body.slideshow .ad-top .megaban{background:#333} .site-liberation .btn-read-digitalpaper{border-color:#878787} .site-liberation .toolbox,.site-liberation .toolbox li.fold-options ul,.site-liberation .toolbox li.fold-options+li.fold-options{border-color:#d7d7d7} .site-liberation .btn-read-digitalpaper a,.site-liberation .btn-read-digitalpaper span{color:#2e2e2e} -#core-liberation .pagination{background-color:#e7e7e7;border-bottom-color:#b7b7b7} +#core-liberation .pagination{background-color:#e7e7e7;border-top-color:#b7b7b7;border-bottom-color:#b7b7b7} #bar-liberation,#bar-liberation #login-box-content,#bar-liberation .content ul.list li{border-bottom-color:#dadada} #core-liberation .pagination .disabled{background-color:transparent;color:#c8c8c8} #core-liberation .pagination .current{background-color:transparent;color:#e20000} diff --git a/test/fixtures/bootstrap-min.css b/test/fixtures/bootstrap-min.css index 096fbeb7e..31da90d1d 100644 --- a/test/fixtures/bootstrap-min.css +++ b/test/fixtures/bootstrap-min.css @@ -1,4 +1,6 @@ body,figure{margin:0} +.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.pre-scrollable{max-height:340px} +.btn-group>.btn-group,.btn-toolbar .btn-group,.btn-toolbar .input-group,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.dropdown-menu{float:left} html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;font-size:10px;-webkit-tap-highlight-color:transparent} article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block} audio,canvas,progress,video{display:inline-block;vertical-align:baseline} @@ -399,6 +401,7 @@ code,kbd{padding:2px 4px;font-size:90%} .blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'} address{margin-bottom:20px;font-style:normal} code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace} +.popover,.tooltip{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif} code{color:#c7254e;background-color:#f9f2f4} kbd{color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)} kbd kbd{padding:0;font-size:100%;-webkit-box-shadow:none;box-shadow:none} @@ -406,7 +409,7 @@ pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;color:#333;word-b .container,.container-fluid{margin-right:auto;margin-left:auto} pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;border-radius:0} .container,.container-fluid{padding-right:15px;padding-left:15px} -.pre-scrollable{max-height:340px;overflow-y:scroll} +.pre-scrollable{overflow-y:scroll} @media (min-width:768px){.container{width:750px} } @media (min-width:992px){.container{width:970px} @@ -415,7 +418,6 @@ pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;border-r } .row{margin-right:-15px;margin-left:-15px} .col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px} -.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left} .col-xs-12{width:100%} .col-xs-11{width:91.66666667%} .col-xs-10{width:83.33333333%} @@ -640,7 +642,6 @@ caption{padding-top:8px;padding-bottom:8px;color:#777} .table-hover>tbody>tr:hover,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5} table col[class*=col-]{position:static;display:table-column;float:none} table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none} -.btn-group>.btn-group,.btn-toolbar .btn-group,.btn-toolbar .input-group,.dropdown-menu{float:left} .table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8} .table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8} .table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6} @@ -688,6 +689,7 @@ textarea.form-control{height:auto} .checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px} .checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer} .checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px \9;margin-left:-20px} +.collapsing,.dropdown,.dropup,.has-feedback{position:relative} .checkbox+.checkbox,.radio+.radio{margin-top:-5px} .checkbox-inline,.radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer} .checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px} @@ -709,10 +711,8 @@ select[multiple].input-lg,textarea.input-lg{height:auto} select.form-group-lg .form-control{height:46px;line-height:46px} select[multiple].form-group-lg .form-control,textarea.form-group-lg .form-control{height:auto} .form-group-lg .form-control-static{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333} -.has-feedback{position:relative} .has-feedback .form-control{padding-right:42.5px} .form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none} -.collapsing,.dropdown,.dropup{position:relative} .input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px} .input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px} .has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)} @@ -740,7 +740,6 @@ select[multiple].form-group-lg .form-control,textarea.form-group-lg .form-contro .form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0} .form-inline .has-feedback .form-control-feedback{top:0} } -.btn-block,input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%} .form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0} .form-horizontal .checkbox,.form-horizontal .radio{min-height:27px} .form-horizontal .form-group{margin-right:-15px;margin-left:-15px} @@ -787,8 +786,9 @@ select[multiple].form-group-lg .form-control,textarea.form-group-lg .form-contro .btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px} .btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px} .btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px} -.btn-block{display:block} +.btn-block{display:block;width:100%} .btn-block+.btn-block{margin-top:5px} +input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%} .fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear} .fade.in{opacity:1} .collapse{display:none;visibility:hidden} @@ -797,8 +797,6 @@ tr.collapse.in{display:table-row} tbody.collapse.in{display:table-row-group} .collapsing{height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility} .caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent} -.input-group-addon:last-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0} -.input-group-addon:first-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0} .dropdown-toggle:focus{outline:0} .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)} .btn-group-vertical>.btn:not(:first-child):not(:last-child),.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn,.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0} @@ -840,6 +838,7 @@ tbody.collapse.in{display:table-row-group} .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none} .btn-lg .caret{border-width:5px 5px 0} .dropup .btn-lg .caret{border-width:0 5px 5px} +.input-group-addon,.popover{font-weight:400;border:1px solid #ccc} .btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%} .btn-group-vertical>.btn-group>.btn{float:none} .btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0} @@ -867,12 +866,14 @@ select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.i .nav>li,.nav>li>a{position:relative;display:block} .input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0} .input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle} -.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px} +.input-group-addon{padding:6px 12px;font-size:14px;line-height:1;color:#555;text-align:center;background-color:#eee;border-radius:4px} .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px} .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px} .input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0} .input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0} +.input-group-addon:first-child{border-right:0} .input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0} +.input-group-addon:last-child{border-left:0} .input-group-btn{position:relative;font-size:0;white-space:nowrap} .input-group-btn>.btn{position:relative} .input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px} @@ -887,12 +888,12 @@ select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.i .nav-tabs{border-bottom:1px solid #ddd} .nav-tabs>li{float:left;margin-bottom:-1px} .nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0} -.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd} .nav-tabs>li>a:hover{border-color:#eee #eee #ddd} .nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent} .nav-tabs.nav-justified{width:100%;border-bottom:0} .nav-tabs.nav-justified>li{float:none} .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center;margin-right:0;border-radius:4px} +.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd} @media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%} .nav-tabs.nav-justified>li>a{margin-bottom:0;border-bottom:1px solid #ddd;border-radius:4px 4px 0 0} .nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff} @@ -907,17 +908,16 @@ select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.i .nav-justified>li>a{margin-bottom:5px;text-align:center} .nav-tabs-justified{border-bottom:0} .nav-tabs-justified>li>a{margin-right:0;border-radius:4px} -.navbar,.navbar-toggle{border:1px solid transparent} +.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd} @media (min-width:768px){.nav-justified>li{display:table-cell;width:1%} .nav-justified>li>a{margin-bottom:0} .nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0} .nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff} } -.navbar-form,.panel-heading{border-bottom:1px solid transparent} .tab-content>.tab-pane{display:none;visibility:hidden} .tab-content>.active{display:block;visibility:visible} .nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0} -.navbar{position:relative;min-height:50px;margin-bottom:20px} +.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent} .navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)} .navbar-collapse.in{overflow-y:auto} @media (min-width:768px){.navbar{border-radius:4px} @@ -927,8 +927,7 @@ select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.i .navbar-collapse.in{overflow-y:visible} .navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0} } -.embed-responsive,.modal,.modal-open,.progress{overflow:hidden} -.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px} +.carousel-inner,.embed-responsive,.modal,.modal-open,.progress{overflow:hidden} @media (max-device-width:480px)and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px} } .container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px} @@ -943,7 +942,7 @@ select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.i .navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0} .navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px} } -.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;border-radius:4px} +.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:4px} .navbar-toggle:focus{outline:0} .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px} .navbar-toggle .icon-bar+.icon-bar{margin-top:4px} @@ -960,7 +959,7 @@ select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.i .navbar-nav>li{float:left} .navbar-nav>li>a{padding-top:15px;padding-bottom:15px} } -.navbar-form{padding:10px 15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:8px -15px} +.navbar-form{padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:8px -15px} @media (min-width:768px){.navbar-form .form-control-static,.navbar-form .form-group{display:inline-block} .navbar-form .control-label,.navbar-form .form-group{margin-bottom:0;vertical-align:middle} .navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle} @@ -1189,7 +1188,7 @@ a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-gro .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)} .panel-title,.panel>.list-group,.panel>.panel-collapse>.list-group,.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0} .panel-body{padding:15px} -.panel-heading{padding:10px 15px;border-top-left-radius:3px;border-top-right-radius:3px} +.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px} .panel-group .panel-heading,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0} .panel-title{margin-top:0;font-size:16px} .panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px} @@ -1207,6 +1206,8 @@ a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-gro .panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd} .panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0} .panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0} +.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0} +.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0} .panel>.table-responsive{margin-bottom:0;border:0} .panel-group{margin-bottom:20px} .panel-group .panel{margin-bottom:0;border-radius:4px} @@ -1253,7 +1254,6 @@ a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-gro .well-lg{padding:24px;border-radius:6px} .well-sm{padding:9px;border-radius:3px} .close{float:right;font-size:21px;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2} -.popover,.tooltip{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:400} .close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5} button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0} .modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;-webkit-overflow-scrolling:touch;outline:0} @@ -1283,14 +1283,14 @@ button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;bor .tooltip.top-left .tooltip-arrow,.tooltip.top-right .tooltip-arrow{bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000} @media (min-width:992px){.modal-lg{width:900px} } -.popover>.arrow,.popover>.arrow:after,.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid} -.tooltip{position:absolute;z-index:1070;display:block;font-size:12px;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0} +.tooltip{position:absolute;z-index:1070;display:block;font-size:12px;font-weight:400;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0} .tooltip.in{filter:alpha(opacity=90);opacity:.9} .tooltip.top{padding:5px 0;margin-top:-3px} .tooltip.right{padding:0 5px;margin-left:3px} .tooltip.bottom{padding:5px 0;margin-top:3px} .tooltip.left{padding:0 5px;margin-left:-3px} .tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px} +.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid} .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000} .tooltip.top-left .tooltip-arrow{right:5px} .tooltip.top-right .tooltip-arrow{left:5px} @@ -1299,14 +1299,14 @@ button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;bor .tooltip.bottom .tooltip-arrow{left:50%;margin-left:-5px} .tooltip.bottom-left .tooltip-arrow{right:5px;margin-top:-5px} .tooltip.bottom-right .tooltip-arrow{left:5px;margin-top:-5px} -.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-size:14px;line-height:1.42857143;text-align:left;white-space:normal;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)} +.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-size:14px;line-height:1.42857143;text-align:left;white-space:normal;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)} .popover.top{margin-top:-10px} .popover.right{margin-left:10px} .popover.bottom{margin-top:10px} .popover.left{margin-left:-10px} .popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0} .popover-content{padding:9px 14px} -.popover>.arrow,.popover>.arrow:after{display:block} +.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid} .carousel,.carousel-inner{position:relative} .popover>.arrow{border-width:11px} .popover>.arrow:after{content:"";border-width:10px} @@ -1319,7 +1319,7 @@ button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;bor .popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff} .popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)} .popover.left>.arrow:after{right:1px;border-right-width:0;border-left-color:#fff} -.carousel-inner{width:100%;overflow:hidden} +.carousel-inner{width:100%} .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left} .carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1} @media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;perspective:1000} diff --git a/test/selectors/extractor-test.js b/test/selectors/extractor-test.js index b24c94c2d..e813f7da0 100644 --- a/test/selectors/extractor-test.js +++ b/test/selectors/extractor-test.js @@ -93,18 +93,36 @@ vows.describe(extractor) assert.deepEqual(tokens, [['-webkit-border-top-left-radius', 'none', 'border-radius', [['-webkit-border-top-left-radius'], ['none']], '-webkit-border-top-left-radius:none', [['a']], true]]); } }, - 'border-image': { + 'border-image-width': { 'topic': extractor(buildToken('a{border-image-width:2px}')), 'has no properties': function (tokens) { assert.deepEqual(tokens, [['border-image-width', '2px', 'border-image', [['border-image-width'], ['2px']], 'border-image-width:2px', [['a']], true]]); } }, - 'border-top': { + 'border-color': { + 'topic': extractor(buildToken('a{border-color:red}')), + 'has no properties': function (tokens) { + assert.deepEqual(tokens, [['border-color', 'red', 'border', [['border-color'], ['red']], 'border-color:red', [['a']], true]]); + } + }, + 'border-top-style': { 'topic': extractor(buildToken('a{border-top-style:none}')), 'has no properties': function (tokens) { assert.deepEqual(tokens, [['border-top-style', 'none', 'border-top', [['border-top-style'], ['none']], 'border-top-style:none', [['a']], true]]); } }, + 'border-top': { + 'topic': extractor(buildToken('a{border-top:none}')), + 'has no properties': function (tokens) { + assert.deepEqual(tokens, [['border-top', 'none', 'border', [['border-top'], ['none']], 'border-top:none', [['a']], true]]); + } + }, + 'border-collapse': { + 'topic': extractor(buildToken('a{border-collapse:collapse}')), + 'has no properties': function (tokens) { + assert.deepEqual(tokens, [['border-collapse', 'collapse', 'border-collapse', [['border-collapse'], ['collapse']], 'border-collapse:collapse', [['a']], true]]); + } + }, 'text-shadow': { 'topic': extractor(buildToken('a{text-shadow:none}')), 'has no properties': function (tokens) { diff --git a/test/selectors/optimizer-test.js b/test/selectors/optimizer-test.js index 4be858de4..2cbb1f298 100644 --- a/test/selectors/optimizer-test.js +++ b/test/selectors/optimizer-test.js @@ -129,6 +129,10 @@ vows.describe(SelectorsOptimizer) 'div{margin-top:0}.one{margin:5px}.two{display:block;margin-top:0}.three{color:red}.four{margin-top:0}', 'div{margin-top:0}.one{margin:5px}.four,.two{margin-top:0}.two{display:block}.three{color:red}' ], + 'over shorthand - border': [ + '.one{border-color:red}.two{border:1px solid}.three{color:#fff;border-color:red}', + '.one{border-color:red}.two{border:1px solid}.three{color:#fff;border-color:red}' + ], 'granuar over granular': [ 'div{margin-top:0}.one{margin-bottom:2px}.two{display:block;margin-top:0}', '.two,div{margin-top:0}.one{margin-bottom:2px}.two{display:block}' diff --git a/test/selectors/reorderable-test.js b/test/selectors/reorderable-test.js index 8edb34790..143fbc679 100644 --- a/test/selectors/reorderable-test.js +++ b/test/selectors/reorderable-test.js @@ -129,6 +129,62 @@ vows.describe(canReorderSingle) assert.isTrue(result); } }, + 'different properties with same root - border #1': { + 'topic': function () { + return canReorderSingle(propertiesIn('a{border:none}')[0], propertiesIn('a{border-top-color:red}')[0]); + }, + 'must be false': function (result) { + assert.isFalse(result); + } + }, + 'different properties with same root - border #2': { + 'topic': function () { + return canReorderSingle(propertiesIn('a{border-top:1px solid red}')[0], propertiesIn('a{border-bottom:1px solid blue}')[0]); + }, + 'must be true': function (result) { + assert.isTrue(result); + } + }, + 'different properties with same root - border #3': { + 'topic': function () { + return canReorderSingle(propertiesIn('a{border-top-color:red}')[0], propertiesIn('a{border-bottom:1px solid blue}')[0]); + }, + 'must be true': function (result) { + assert.isTrue(result); + } + }, + 'different properties with same root - border #4': { + 'topic': function () { + return canReorderSingle(propertiesIn('a{border-bottom:none}')[0], propertiesIn('a{border-bottom:1px solid blue}')[0]); + }, + 'must be false': function (result) { + assert.isFalse(result); + } + }, + 'different properties with same root - border #5': { + 'topic': function () { + return canReorderSingle(propertiesIn('a{border-bottom:none}')[0], propertiesIn('a{border-bottom:none}')[0]); + }, + 'must be true': function (result) { + assert.isTrue(result); + } + }, + 'different properties with same root - border #6': { + 'topic': function () { + return canReorderSingle(propertiesIn('a{border-radius:3px}')[0], propertiesIn('a{border:0}')[0]); + }, + 'must be true': function (result) { + assert.isTrue(result); + } + }, + 'different properties with same root - border #7': { + 'topic': function () { + return canReorderSingle(propertiesIn('a{border-radius:3px}')[0], propertiesIn('a{border-style:solid}')[0]); + }, + 'must be true': function (result) { + assert.isTrue(result); + } + }, 'shorhand and longhand with different value': { 'topic': function () { return canReorderSingle(propertiesIn('a{margin:3px}')[0], propertiesIn('a{margin-bottom:5px}')[0]);