{"product_id":"css3-pushing-the-limits-isbn-9781118652633","title":"CSS3 Pushing the Limits","description":"\u003cp\u003e\u003cb\u003ePush CSS3 and your design skills to the limit—and beyond!\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eRepresenting an evolutionary leap forward for CSS, CSS3 is chock-full of new capabilities that dramatically expand the boundaries of what a styling language can do. But many of those new features remain undocumented, making it difficult to learn what they are and how to use them to create the sophisticated sites and web apps clients demand and users have grown to expect.\u003c\/p\u003e \u003cp\u003eUntil now.\u003c\/p\u003e \u003cp\u003eThis book introduces you to all of CSS3’s new and advanced features, and, with the help of dozens of real-world examples and live demos, it shows how to use those features to design dazzling, fully-responsive sites and web apps.\u003c\/p\u003e \u003cp\u003e Among other things, you’ll learn how to:\u003c\/p\u003e \u003cp\u003e•         Use advanced selectors and an array of powerful new text tools\u003c\/p\u003e \u003cp\u003e•         Create adaptable background images, decorative borders, and complex patterns\u003c\/p\u003e \u003cp\u003e•         Create amazing effects with 2D and 3D transforms, transitions, and keyframe-based animations\u003c\/p\u003e \u003cp\u003e•         Take advantage of new layout tools to solve an array of advanced layout challenges—fast\u003c\/p\u003e \u003cp\u003e•         Vastly simplify responsive site design using media queries and new layout modules\u003c\/p\u003e \u003cp\u003e•         Create abstract and scalable shapes and icons with pseudo-elements \u003c\/p\u003e \u003cp\u003e•         Leverage preprocessors and use CSS like a programming language within a stylesheet context\u003c\/p\u003e \u003cp\u003e Don’t pass up this opportunity to go beyond the basics and learn what CSS3 can really do!\u003c\/p\u003e  Introduction 1  \u003cp\u003e\u003cb\u003ePart I New Toys 7\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 1 Advanced Selectors 9\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eChild and Sibling Selectors 9\u003c\/p\u003e \u003cp\u003eChild Combinator 9\u003c\/p\u003e \u003cp\u003eAdjacent Sibling Combinator 10\u003c\/p\u003e \u003cp\u003eGeneral Sibling Combinator 10\u003c\/p\u003e \u003cp\u003eAttribute Selectors 11\u003c\/p\u003e \u003cp\u003eSelecting Based on the Existence of an HTML Attribute 11\u003c\/p\u003e \u003cp\u003eSelecting Based on the Exact Value of an HTML Attribute 11\u003c\/p\u003e \u003cp\u003eSelecting Based on the Partial Contents of an HTML Attribute Value 12\u003c\/p\u003e \u003cp\u003eSelecting Based on the Beginning of an HTML Attribute Value 12\u003c\/p\u003e \u003cp\u003eSelecting Based on the End of an HTML Attribute Value 13\u003c\/p\u003e \u003cp\u003eSelecting Based on Space-Separated HTML Attribute Values 13\u003c\/p\u003e \u003cp\u003ePseudo-Classes 13\u003c\/p\u003e \u003cp\u003eFirsts and Lasts 14\u003c\/p\u003e \u003cp\u003eNth Child Selectors 15\u003c\/p\u003e \u003cp\u003eTaking Nth Child to the Next Level with Expressions 16\u003c\/p\u003e \u003cp\u003eUsing Keywords with Nth Child 17\u003c\/p\u003e \u003cp\u003eUsing Negative Numbers with Nth Child 17\u003c\/p\u003e \u003cp\u003eThe Best of the Rest 19\u003c\/p\u003e \u003cp\u003eBringing It All Together 20\u003c\/p\u003e \u003cp\u003eSummary 23\u003c\/p\u003e \u003cp\u003eFurther Reading 24\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 2 New Tools for Text 25\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003ePerfecting Your Type 25\u003c\/p\u003e \u003cp\u003eLigatures 25\u003c\/p\u003e \u003cp\u003eKerning 27\u003c\/p\u003e \u003cp\u003eBorrowing from SVG 28\u003c\/p\u003e \u003cp\u003eMaintaining Legibility with Aspect Values 30\u003c\/p\u003e \u003cp\u003eMore Control with More New Toys 33\u003c\/p\u003e \u003cp\u003eFont Stretch 33\u003c\/p\u003e \u003cp\u003eSynthetic Font Styling 33\u003c\/p\u003e \u003cp\u003eBy the Numbers 34\u003c\/p\u003e \u003cp\u003eHyphenation 35\u003c\/p\u003e \u003cp\u003eWriting Modes 37\u003c\/p\u003e \u003cp\u003eThe Direction Property 38\u003c\/p\u003e \u003cp\u003eThe Writing Mode Property 38\u003c\/p\u003e \u003cp\u003eThe Text Orientation Property 38\u003c\/p\u003e \u003cp\u003eSVG to the Rescue! 38\u003c\/p\u003e \u003cp\u003eLooking Good Is Half the Battle 39\u003c\/p\u003e \u003cp\u003eText Decoration 39\u003c\/p\u003e \u003cp\u003eMasking Background Images Over Text 40\u003c\/p\u003e \u003cp\u003eText Shadow 42\u003c\/p\u003e \u003cp\u003eCreating 3D Text 42\u003c\/p\u003e \u003cp\u003eCreating Outer Glow 44\u003c\/p\u003e \u003cp\u003eSummary 45\u003c\/p\u003e \u003cp\u003eFurther Reading 46\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 3 New Tools for Backgrounds and Borders 47\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eMore Control with CSS3 Backgrounds 47\u003c\/p\u003e \u003cp\u003eBackground Clip and Background Origin 47\u003c\/p\u003e \u003cp\u003eBackground Size 50\u003c\/p\u003e \u003cp\u003eUnderstanding the Background Shorthand 52\u003c\/p\u003e \u003cp\u003eHandling Box Breaks 52\u003c\/p\u003e \u003cp\u003eInto the Future with the Image Function 53\u003c\/p\u003e \u003cp\u003eMultiple Backgrounds 55\u003c\/p\u003e \u003cp\u003eThe Syntax for Multiple Backgrounds 55\u003c\/p\u003e \u003cp\u003eLayered Backgrounds 56\u003c\/p\u003e \u003cp\u003eAnimating Multiple Backgrounds 57\u003c\/p\u003e \u003cp\u003eNew Tools for Borders 58\u003c\/p\u003e \u003cp\u003eBorder Image 58\u003c\/p\u003e \u003cp\u003eInto the Future with Border Corner Shape 62\u003c\/p\u003e \u003cp\u003eGradients 63\u003c\/p\u003e \u003cp\u003eLinear Gradients 63\u003c\/p\u003e \u003cp\u003eThe Linear Gradient Syntax 63\u003c\/p\u003e \u003cp\u003eBrowser Support 65\u003c\/p\u003e \u003cp\u003eLinear Gradients in Action 65\u003c\/p\u003e \u003cp\u003eRadial Gradients 66\u003c\/p\u003e \u003cp\u003eThe Radial Gradients Syntax 66\u003c\/p\u003e \u003cp\u003eRadial Gradients in Action 68\u003c\/p\u003e \u003cp\u003eBrowser Support 69\u003c\/p\u003e \u003cp\u003ePushing the Limits with Gradient Patterns 70\u003c\/p\u003e \u003cp\u003eSummary 73\u003c\/p\u003e \u003cp\u003eFurther Reading 74\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 4 Into the Browser with CSS3 Filters and Blending Modes 75\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eCSS3 Filters 75\u003c\/p\u003e \u003cp\u003eHow Do CSS Filters Work? 76\u003c\/p\u003e \u003cp\u003eGrayscale 76\u003c\/p\u003e \u003cp\u003eBrightness 77\u003c\/p\u003e \u003cp\u003eContrast 77\u003c\/p\u003e \u003cp\u003eSaturate 78\u003c\/p\u003e \u003cp\u003eSepia 78\u003c\/p\u003e \u003cp\u003eHue-Rotate 79\u003c\/p\u003e \u003cp\u003eInvert 79\u003c\/p\u003e \u003cp\u003eOpacity 80\u003c\/p\u003e \u003cp\u003eDrop Shadow 80\u003c\/p\u003e \u003cp\u003eBlur 81\u003c\/p\u003e \u003cp\u003eCombining Filters 82\u003c\/p\u003e \u003cp\u003eBlending Modes 83\u003c\/p\u003e \u003cp\u003eWhat Are Blending Modes? 84\u003c\/p\u003e \u003cp\u003eThe Blending Modes Syntax 85\u003c\/p\u003e \u003cp\u003eSummary 85\u003c\/p\u003e \u003cp\u003eFurther Reading 86\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart II Transforms, Transitions, and Animation 87\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 5 Introducing CSS3 2D Transforms 89\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eThe Transform Property 89\u003c\/p\u003e \u003cp\u003eTranslate 90\u003c\/p\u003e \u003cp\u003eSkew 93\u003c\/p\u003e \u003cp\u003eRotate 94\u003c\/p\u003e \u003cp\u003eScale 96\u003c\/p\u003e \u003cp\u003eTransform Origin 99\u003c\/p\u003e \u003cp\u003eCombining Transforms 100\u003c\/p\u003e \u003cp\u003eBrowser Support 102\u003c\/p\u003e \u003cp\u003eSummary 102\u003c\/p\u003e \u003cp\u003eFurther Reading 102\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 6 Bringing 2D Transforms to Life with Transitions 103\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroducing CSS Transitions 103\u003c\/p\u003e \u003cp\u003eControlling Your Transitions 104\u003c\/p\u003e \u003cp\u003eUnderstanding the Shorthand Syntax 105\u003c\/p\u003e \u003cp\u003eUnderstanding the Transition Property 106\u003c\/p\u003e \u003cp\u003eApplying Separate On and Off Transitions 107\u003c\/p\u003e \u003cp\u003eUnderstanding the Timing Function 108\u003c\/p\u003e \u003cp\u003eThe Bézier Curve 109\u003c\/p\u003e \u003cp\u003eEase 111\u003c\/p\u003e \u003cp\u003eLinear 112\u003c\/p\u003e \u003cp\u003eEase-In 113\u003c\/p\u003e \u003cp\u003eEase-Out 113\u003c\/p\u003e \u003cp\u003eEase-In-Out 114\u003c\/p\u003e \u003cp\u003eStepping Functions 115\u003c\/p\u003e \u003cp\u003eBrowser Support for Transitions 117\u003c\/p\u003e \u003cp\u003eTransitions in Action 117\u003c\/p\u003e \u003cp\u003eCombining Transitions and 2D Transforms 120\u003c\/p\u003e \u003cp\u003eTransitioning Rotate 120\u003c\/p\u003e \u003cp\u003eTransitioning Translate 123\u003c\/p\u003e \u003cp\u003eTransitioning Scale 127\u003c\/p\u003e \u003cp\u003eTransitioning Skew 128\u003c\/p\u003e \u003cp\u003eCreating a Scattered Image Gallery 129\u003c\/p\u003e \u003cp\u003eSummary 133\u003c\/p\u003e \u003cp\u003eFurther Reading 134\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 7 A New Dimension with 3D Transforms 135\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eWhat Are 3D Transforms? 135\u003c\/p\u003e \u003cp\u003eIt’s All About Perspective 136\u003c\/p\u003e \u003cp\u003eThe Perspective Property 137\u003c\/p\u003e \u003cp\u003ePerspective Origin 141\u003c\/p\u003e \u003cp\u003eMaintaining Perspective 142\u003c\/p\u003e \u003cp\u003eBackface Visibility 145\u003c\/p\u003e \u003cp\u003eMoving on to More Transform Properties 148\u003c\/p\u003e \u003cp\u003eRotating in a 3D Environment 149\u003c\/p\u003e \u003cp\u003eTranslating in a 3D Environment 151\u003c\/p\u003e \u003cp\u003eScaling in a 3D Environment 153\u003c\/p\u003e \u003cp\u003eCreating a Cube Using 3D Transforms 154\u003c\/p\u003e \u003cp\u003eAnimating the Cube with Transitions 157\u003c\/p\u003e \u003cp\u003eExamining Browser Support for 3D Transforms 159\u003c\/p\u003e \u003cp\u003eSummary 160\u003c\/p\u003e \u003cp\u003eFurther Reading 160\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 8 Getting Animated 161\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroducing CSS3 Animation 161\u003c\/p\u003e \u003cp\u003eDefining Keyframes 161\u003c\/p\u003e \u003cp\u003eApplying the Animation 163\u003c\/p\u003e \u003cp\u003eFurther Control 163\u003c\/p\u003e \u003cp\u003eLooking at CSS3 Animations in Action 166\u003c\/p\u003e \u003cp\u003eAdding Progressive Enhancement with Subtle Animation 170\u003c\/p\u003e \u003cp\u003eFade In Effects 171\u003c\/p\u003e \u003cp\u003eAttention Seekers 173\u003c\/p\u003e \u003cp\u003eShake 173\u003c\/p\u003e \u003cp\u003eWobble 174\u003c\/p\u003e \u003cp\u003eCombining Animations 175\u003c\/p\u003e \u003cp\u003eForming the Structure 176\u003c\/p\u003e \u003cp\u003eCreating an Animated Slide Show 177\u003c\/p\u003e \u003cp\u003eCreating a Swinging Animation 178\u003c\/p\u003e \u003cp\u003eIntroducing Content with Subtle Animation 180\u003c\/p\u003e \u003cp\u003eSeeking Attention with Loud Animation 182\u003c\/p\u003e \u003cp\u003eExamining Browser Support for CSS Animation 182\u003c\/p\u003e \u003cp\u003eSummary 183\u003c\/p\u003e \u003cp\u003eFurther Reading 183\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart III Getting to Grips with New Layout Tools 185\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 9 Creating a Multicolumn Layout 187\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eThe Evolution of Layout Tools 187\u003c\/p\u003e \u003cp\u003eWhat’s New in Layout Solutions? 188\u003c\/p\u003e \u003cp\u003eIntroducing Multi-column Layout 189\u003c\/p\u003e \u003cp\u003eNew Multicolumn Properties 189\u003c\/p\u003e \u003cp\u003eDefining Your Columns 189\u003c\/p\u003e \u003cp\u003eHandling Column Breaks 198\u003c\/p\u003e \u003cp\u003eLimitations 201\u003c\/p\u003e \u003cp\u003eCreating a Multicolumn Layout 202\u003c\/p\u003e \u003cp\u003eExamining Browser Support for Multi-column Layout 206\u003c\/p\u003e \u003cp\u003eSummary 207\u003c\/p\u003e \u003cp\u003eFurther Reading 208\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 10 Flexible Box Layout 209\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eWhat Is Flexbox? 209\u003c\/p\u003e \u003cp\u003eNew Flexbox Properties 210\u003c\/p\u003e \u003cp\u003eEstablishing the Flex Formatting Context 210\u003c\/p\u003e \u003cp\u003eExamining Direction, Flow, and Visual Ordering 212\u003c\/p\u003e \u003cp\u003eControlling Alignment 217\u003c\/p\u003e \u003cp\u003eDefining Flex Factors 223\u003c\/p\u003e \u003cp\u003eCreating a Flexible Box Layout 225\u003c\/p\u003e \u003cp\u003eExamining Browser Support for Flexbox 230\u003c\/p\u003e \u003cp\u003eSummary 231\u003c\/p\u003e \u003cp\u003eFurther Reading 231\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 11 Grid Layout, Regions, and Exclusions 233\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eIntroducing CSS Grid Layout 233\u003c\/p\u003e \u003cp\u003eWhat Is Grid Layout? 234\u003c\/p\u003e \u003cp\u003eCreating a Grid Element 234\u003c\/p\u003e \u003cp\u003eDefining the Grid 235\u003c\/p\u003e \u003cp\u003ePositioning Elements into the Grid 237\u003c\/p\u003e \u003cp\u003eMaking Your Grid Flexible and Adaptable 238\u003c\/p\u003e \u003cp\u003eIntroducing CSS Regions 241\u003c\/p\u003e \u003cp\u003eWhat Are CSS Regions? 241\u003c\/p\u003e \u003cp\u003eHow Do Regions Work? 242\u003c\/p\u003e \u003cp\u003eIntroducing CSS Exclusions 243\u003c\/p\u003e \u003cp\u003eWhat Are CSS Exclusions? 244\u003c\/p\u003e \u003cp\u003eHow Do Exclusions Work? 244\u003c\/p\u003e \u003cp\u003ePlaying with Shapes 247\u003c\/p\u003e \u003cp\u003eA Caveat on Exclusions and Shapes 249\u003c\/p\u003e \u003cp\u003eSummary 249\u003c\/p\u003e \u003cp\u003eFurther Reading 250\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 12 Going Responsive with CSS3 Media Queries 251\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eWhat Is Responsive Web Design? 251\u003c\/p\u003e \u003cp\u003eUsing Media Queries to Design for Device Differences 252\u003c\/p\u003e \u003cp\u003eUnderstanding Media Types and Media Features 253\u003c\/p\u003e \u003cp\u003eApplying the Mobile-First Approach 253\u003c\/p\u003e \u003cp\u003eUsing the Viewport Meta Tag 256\u003c\/p\u003e \u003cp\u003eMaking a Multicolumn Layout Responsive 256\u003c\/p\u003e \u003cp\u003eMaking a Flexbox Layout Responsive 261\u003c\/p\u003e \u003cp\u003eA Word on CSS Grid Layout 268\u003c\/p\u003e \u003cp\u003eThe Here and Now of RWD 269\u003c\/p\u003e \u003cp\u003eSummary 269\u003c\/p\u003e \u003cp\u003eFurther Reading 270\u003c\/p\u003e \u003cp\u003e\u003cb\u003ePart IV Pushing the Limits 271\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 13 Getting Creative with Pseudo-elements  273\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eDistinguishing Pseudo-elements and Pseudo-classes 273\u003c\/p\u003e \u003cp\u003eWhat Is a Pseudo-class? 273\u003c\/p\u003e \u003cp\u003eWhat Is a Pseudo-element? 274\u003c\/p\u003e \u003cp\u003eSyntactical Differences 274\u003c\/p\u003e \u003cp\u003eExploring the Current Range of Pseudo-elements 275\u003c\/p\u003e \u003cp\u003eEnhancing Your Typography with Pseudo-elements 275\u003c\/p\u003e \u003cp\u003eDrawing Users into Your Copy 276\u003c\/p\u003e \u003cp\u003eGetting Creative with Type-based Pseudo-elements 278\u003c\/p\u003e \u003cp\u003eUsing Pseudo-elements to Generate Content 282\u003c\/p\u003e \u003cp\u003ePushing Pseudo-elements to the Limit 285\u003c\/p\u003e \u003cp\u003eA Contemporary Clearfix 287\u003c\/p\u003e \u003cp\u003eCreating Scalable Icons and Shapes 288\u003c\/p\u003e \u003cp\u003eCreating a Speech Bubble 288\u003c\/p\u003e \u003cp\u003eCreating an OK Icon  289\u003c\/p\u003e \u003cp\u003eCreating a Print Icon 290\u003c\/p\u003e \u003cp\u003eCreating a Save Icon 291\u003c\/p\u003e \u003cp\u003ePushing the Limits Even Further and Knowing When to Stop 293\u003c\/p\u003e \u003cp\u003eSummary 293\u003c\/p\u003e \u003cp\u003eFurther Reading 294\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 14 Using Preprocessors to Push CSS3 to the Limit 295\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eWhat Is a CSS Preprocessor? 295\u003c\/p\u003e \u003cp\u003eWhat Can CSS Preprocessors Do for You? 295\u003c\/p\u003e \u003cp\u003eChoosing the Right Preprocessor for You 296\u003c\/p\u003e \u003cp\u003eDeclaring Variables 297\u003c\/p\u003e \u003cp\u003eDoing Functions and Simple Math 298\u003c\/p\u003e \u003cp\u003eUsing Mixins 299\u003c\/p\u003e \u003cp\u003eSelector Inheritance 300\u003c\/p\u003e \u003cp\u003eNested Selectors 301\u003c\/p\u003e \u003cp\u003eGetting to Grips with the Dark Side of Preprocessors 302\u003c\/p\u003e \u003cp\u003eStep 1: Installing Ruby 303\u003c\/p\u003e \u003cp\u003eStep 2: Installing Sass 304\u003c\/p\u003e \u003cp\u003eStep 3: Creating Your First Sass File 304\u003c\/p\u003e \u003cp\u003eStep 4: Compiling Your Sass Code 305\u003c\/p\u003e \u003cp\u003eHelpful Tools 306\u003c\/p\u003e \u003cp\u003eMaking CSS3 More Efficient with Mixins 307\u003c\/p\u003e \u003cp\u003eCreating Proportional Layouts with Simple Math 309\u003c\/p\u003e \u003cp\u003eUsing Functions to Form a Dynamic Color Palette 310\u003c\/p\u003e \u003cp\u003eA Word of Caution on Preprocessors 311\u003c\/p\u003e \u003cp\u003eSummary 311\u003c\/p\u003e \u003cp\u003eFurther Reading 311\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 15 Creating Practical Solutions Using Only CSS3 313\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eCreating Tabbed Content Using Only CSS3 313\u003c\/p\u003e \u003cp\u003eThe Markup 314\u003c\/p\u003e \u003cp\u003eApplying Basic Styling to the Panels 316\u003c\/p\u003e \u003cp\u003eStyling the Tabs 317\u003c\/p\u003e \u003cp\u003eMaking the Tabs Functional 318\u003c\/p\u003e \u003cp\u003eApplying the Finishing Touches 320\u003c\/p\u003e \u003cp\u003eCreating a Lightbox Feature Using Only CSS3 321\u003c\/p\u003e \u003cp\u003eLaying the Foundations for the Markup 322\u003c\/p\u003e \u003cp\u003eStyling the Thumbnail Gallery 324\u003c\/p\u003e \u003cp\u003eAdding the Lightbox Markup 326\u003c\/p\u003e \u003cp\u003eMaking the Lightbox Functional 327\u003c\/p\u003e \u003cp\u003eApplying the Polish to the Final Design 330\u003c\/p\u003e \u003cp\u003eCreating a 3D Image Carousel Using Only CSS3 334\u003c\/p\u003e \u003cp\u003eMarking Up the Carousel 334\u003c\/p\u003e \u003cp\u003eEstablishing a 3D Formatting Context 335\u003c\/p\u003e \u003cp\u003ePositioning the Images in a 3D Environment 335\u003c\/p\u003e \u003cp\u003eMaking the Carousel Functional 339\u003c\/p\u003e \u003cp\u003eApplying the Finishing Touches 340\u003c\/p\u003e \u003cp\u003eSummary 342\u003c\/p\u003e \u003cp\u003eFurther Reading 343\u003c\/p\u003e \u003cp\u003e\u003cb\u003eChapter 16 The Future of CSS 345\u003c\/b\u003e\u003c\/p\u003e \u003cp\u003eCSS Variables 346\u003c\/p\u003e \u003cp\u003eCSS Selectors: Level 4 348\u003c\/p\u003e \u003cp\u003eBrowser Support Using CSS Conditional Rules 352\u003c\/p\u003e \u003cp\u003ePseudo-elements: Level 4 353\u003c\/p\u003e \u003cp\u003eHave Your Say 354\u003c\/p\u003e \u003cp\u003eSummary 354\u003c\/p\u003e \u003cp\u003eFurther Reading 355\u003c\/p\u003e \u003cp\u003eIndex 357\u003c\/p\u003e \u003cp\u003e\u003cb\u003eStephen Greig\u003c\/b\u003e is the author of \u003ci\u003eCSS3 Pushing the Limits\u003c\/i\u003e, published by Wiley.\u003c\/p\u003e","brand":"Wiley","offers":[{"title":"Default Title","offer_id":47989011054821,"sku":"NP9781118652633","price":49.99,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1842\/7735\/files\/9781118652633.jpg?v=1761782422","url":"https:\/\/k12savings.com\/es\/products\/css3-pushing-the-limits-isbn-9781118652633","provider":"K12savings","version":"1.0","type":"link"}