This article was first published in the public number: execution context, synchronous update personal blog: story film, reprint please sign. Code is constantly updated!!

The Demo preview is here at !!!!

Code Preview Demo

supplement

If you have a common can also share out duck!!

The premise

Daily development in the use of CSS code to share with you, which may have a lot of common use. Welcome to put forward better solutions!!

Git address

Common front-end CSS code

1, vertical center alignment

.vc {
   position: absolute;
   top: 50%;
   left: 50%;
   transform: translate(-50%, -50%);
}
.vc {
   position:absolute;
   top: 50%;
   left: 50%;
   width: 100px;
   height: 100px;
   margin:-50px 0 -50px;
}
Copy the code

2. Full screen display

html, 
body {
    position: fixed;
    width: 100%;
    height: 100%;
}
div {
    height: 100%;
}
Copy the code

3. Different A tag links use different styles

// link

a[href^="http://"]{
    background: url(link.gif) no-repeat center right;
}
// emails
a[href^="mailto:"]{
    background: url(email.png) no-repeat center right;
}

// pdfs

a[href$=".pdf"]{
    background: url(pdf.png) no-repeat center right;
}
Copy the code

4. Image gray scale

img {
    filter: gray; 
    -webkit-filter: grayscale(1);
}
Copy the code

5. Background gradient animation

bg { background-image: linear-gradient(#5187c4, #1c2f45); background-size: auto 200%; background-position: 0 100%; The transition: background - 0.5 s position; } bg:hover { background-position: 0 0; }Copy the code

6. Wrap long text

pre {
    white-space: pre-line;
    word-wrap: break-word;
}
Copy the code

7. Obscure text

.text {
   filter: blur(1px);
}
Copy the code

8, with CSS animation ellipsis animation

.point:after { overflow: hidden; display: inline-block; vertical-align: bottom; animation: ellipsis 2s infinite; content: "\2026"; } @keyframes ellipsis { from { width: 2px; } to { width: 15px; }}Copy the code

9. Style resets

html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; outline: none; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } html { height: 101%; } body {font-size: 62.5%; line-height: 1; font-family: Arial, Tahoma, sans-serif; } article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { display: block; } ol, ul { list-style: none; } blockquote, q { quotes: none; } blockquote:before, blockquote:after, q:before, q:after { content: ''; content: none; } strong { font-weight: bold; } table { border-collapse: collapse; border-spacing: 0; } img { border: 0; max-width: 100%; } p {font-size: 1.2em; The line - height: 1.0 em. color: #333; }Copy the code

10. Clear the float

.clearfix:before, .container:after { content: ""; display: table; }
.clearfix:after { clear: both; }
.clearfix { zoom: 1; }
Copy the code

11. CSS element transparency

.transparent { filter: alpha(opacity=50); - KHTML - opacity: 0.5; Moz - opacity: 0.5; Opacity: 0.5; }Copy the code

CSS reference styles

blockquote { background: #f9f9f9; border-left: 10px solid #ccc; Margin: 1.5 em 10 px; padding: .5em 10px; quotes: "\201C""\201D""\2018""\2019"; } blockquote:before { color: #ccc; content: open-quote; font-size: 4em; line-height: .1em; margin-right: .25em; vertical-align: -.4em; } blockquote p { display: inline; }Copy the code

Personality rounded corners

.borderRadius {
    border-radius: 4px 3px 6px 10px;
}
.borderRadius {
    border-top-left-radius: 4px;
    border-top-right-radius: 3px;
    border-bottom-right-radius: 6px;
    border-bottom-left-radius: 10px;
}
Copy the code

14, General media query

@media only screen and (min-device-width : 320px) and (max-device-width : 480px) { /* Styles */ } @media only screen and (min-width : 321px) { /* Styles */ } @media only screen and (max-width : 320px) { /* Styles */ } /* iPad */ @media only screen and (min-device-width : 768px) and (max-device-width : 1024px) { /* Styles */ } @media only screen and (min-device-width : 768px) and (max-device-width : 1024px) and (orientation : landscape) { /* Styles */ } @media only screen and (min-device-width : 768px) and (max-device-width : 1024px) and (orientation : Portrait) {/* Styles */} /* desktop */ @media only screen and (min-width: 1224px) { /* Styles */ } @media only screen and (min-width : 1824px) {/* Styles */} @media only screen and (-webkit-min-device-pixel-ratio:1.5), Only screen and (min-device-pixel-ratio:1.5) {/* Styles */}Copy the code

15. Custom text selection

::selection { background: #e2eae2; }
Copy the code

16. Polarizing the picture border

img.polaroid {
    background:#000; 
    border:solid #fff;
    border-width:6px 6px 20px 6px;
    box-shadow:1px 1px 5px #333; 
    -webkit-box-shadow:1px 1px 5px #333;
    -moz-box-shadow:1px 1px 5px #333;
    height:200px; 
    width:200px;  
}
Copy the code

17, anchor chain connected pseudo class

a:link { color: blue; }
a:visited { color: purple; }
a:hover { color: red; }
a:active { color: yellow; }
Copy the code

18. Full screen background

html { 
    background: url('bg.jpg') no-repeat center center fixed; 
    background-size: cover;
}
Copy the code

19. Content is vertically centered

The center {min - height: 6.5 em. display: table-cell; vertical-align: middle; }Copy the code

20. Force vertical scroll bars

html { height: 101% }
Copy the code

CSS3 gradient template

.bg {
    background: #629721;
    background-image: -webkit-gradient(linear, left top, left bottom, from(#83b842), to(#629721));
    background-image: linear-gradient(top, #83b842, #629721);
}
Copy the code

22, @font-face quote

@font-face { font-family: 'MyWebFont'; src: url('webfont.eot'); src: url('webfont.eot? #iefix') url('webfont.woff') format('woff'), url('webfont.ttf') format('truetype'), url('webfont.svg#svgFontName') format('svg'); } body { font-family: 'MyWebFont', Arial, sans-serif; }Copy the code

23. Connect CSS3 elements

p { position:relative; z-index:1; padding: 10px; margin: 10px; font-size: 21px; The line - height: 1.3 em. color: #fff; background: #ff0030; Box-shadow: 00 0 4px #ff0030, 2px 1px 6px 4px rgba(10,10,0,.5); -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } p:before { content: ""; position: absolute; z-index: -1; top: 3px; bottom: 3px; left :3px; right: 3px; border: 2px dashed #fff; } p a { color: #fff; text-decoration:none; } p a:hover, p a:focus, p a:active { text-decoration:underline; }Copy the code

24, CSS zebra crossing

tbody tr:nth-child(odd) {
    background-color: #ccc;
}
Copy the code

25, CSS &

.amp {
    font-family: Baskerville, 'Goudy Old Style', Palatino, 'Book Antiqua', serif;
    font-style: italic;
    font-weight: normal;
}
Copy the code

26. Inner box shadow

.div { 
    box-shadow: inset 2px 0 4px #000;
}
Copy the code

27. Shadow of outer box

.div {box-shadow: 0 2px 2px-2px rgba(0, 0, 0, 0.52); }Copy the code

28. Triangle list bullets

Margin: 0.75em 0; padding: 0 1em; list-style: none; } li:before { content: ""; border-color: transparent #111; border-style: solid; Border-width: 0.35em 0 0.35em 0.45em; display: block; height: 0; width: 0; left: -1em; Top: 0.9 em. position: relative; }Copy the code

29, fixed width of the center layout

.div {
    width: 800px;
    margin: 0 auto;
}
Copy the code

CSS3 column text

.columnsText {
    text-align: justify;
    -webkit-column-count: 3;
    -webkit-column-gap: 12px;
    -webkit-column-rule: 1px solid #c4c8cc;
}
Copy the code

31, CSS fixed footer

footer {
    position: fixed;
    left: 0px;
    bottom: 0px;
    height: 30px;
    width: 100%;
    background: #444;
}
Copy the code

32. Set the minimum height of the browser

.div{ min-height: 550px; height: auto ! important; height: 550px; }Copy the code

33, CSS3 input effect

Input [type=text] {transition: all 0.30s ease-in-out; outline: none; padding: 3px 0px 3px 3px; margin: 5px 1px 3px 0px; border: 1px solid #ddd; } input[type=text]:focus { box-shadow: 0 0 5px rgba(81, 203, 238, 1); padding: 3px 0px 3px 3px; margin: 5px 1px 3px 0px; border: 1px solid rgba(81, 203, 238, 1); }Copy the code

Force line breaks

pre {
    white-space: pre-wrap;        
    word-wrap: break-word;  
}
Copy the code

Force hand shapes on clickable items

.pointer {
    cursor: pointer;
}
Copy the code

Top of the page box shadow

body:before {
    content: "";
    position: fixed;
    top: -10px;
    left: 0;
    width: 100%;
    height: 10px;
    box-shadow: 0px 0px 10px rgba(0,0,0,.8);
    z-index: 100;
}
Copy the code

CSS3 dialog bubble

.line { background-color: #ededed; border: 2px solid #666; font-size: 35px; The line - height: 1.3 em. margin: 10px auto; padding: 10px; position: relative; text-align: center; width: 300px; border-radius: 20px; box-shadow: 0 0 5px #888; } .chat-bubble-arrow-border { border-color: #666 transparent transparent transparent; border-style: solid; border-width: 20px; height: 0; width: 0; position: absolute; bottom: -42px; left: 30px; } .chat-bubble-arrow { border-color: #ededed transparent transparent transparent; border-style: solid; border-width: 20px; height: 0; width: 0; position: absolute; bottom: -39px; left: 30px; }Copy the code

Persistent list sorting

ol.chapters {
    list-style: none;
    margin-left: 0;
}
ol.chapters > li:before {
    content: counter(chapter) ". ";
    counter-increment: chapter;
    font-weight: bold;
    float: left;
    width: 40px;
}
ol.chapters li {
    clear: left;
}
ol.start {
    counter-reset: chapter;
}
ol.continue {
    counter-reset: chapter 11;
}
Copy the code

39. CSS floats prompt text

a { border-bottom:1px solid #bbb; color:#666; display:inline-block; position:relative; text-decoration:none; } a:hover, a:focus { color:#36c; } a:active { top:1px; } a[data-tooltip]:after { border-top: 8px solid #222; Border - top: 8 px solid hsla (. % 0, 0, 0%, 85); border-left: 8px solid transparent; border-right: 8px solid transparent; content: ""; display: none; height: 0; width: 0; left: 25%; position: absolute; } a[data-tooltip]:before { background: #222; Background: hsla (. % 0, 0, 0%, 85); color: #f6f6f6; content: attr(data-tooltip); display: none; font-family: sans-serif; font-size: 14px; height: 32px; left: 0; line-height: 32px; padding: 0 15px; position: absolute; Text-shadow: 0 1px 1px hsla(0,0%,0%,1); white-space: nowrap; -webkit-border-radius: 5px; -moz-border-radius: 5px; -o-border-radius: 5px; border-radius: 5px; } a[data-tooltip]:hover:after { display: block; top: -9px; } a[data-tooltip]:hover:before { display: block; top: -41px; } a[data-tooltip]:active:after { top: -10px; } a[data-tooltip]:active:before { top: -42px; }Copy the code

40. Dark grey round button

.graybtn {
    box-shadow:inset 0px 1px 0px 0px #ffffff;
    background:gradient( linear, left top, left bottom, color-stop(0.05, #ffffff), color-stop(1, #d1d1d1) );
    filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#d1d1d1');
    background-color:#ffffff;
    border-radius:6px;
    border:1px solid #dcdcdc;
    display:inline-block;
    color:#777777;
    font-family:arial;
    font-size:15px;
    font-weight:bold;
    padding:6px 24px;
    text-decoration:none;
    text-shadow:1px 1px 0px #ffffff;
}
.graybtn:hover {
    background:gradient( linear, left top, left bottom, color-stop(0.05, #d1d1d1), color-stop(1, #ffffff) );
    filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#d1d1d1', endColorstr='#ffffff');
    background-color:#d1d1d1;
}
.graybtn:active {
    position:relative;
    top:1px;
}
Copy the code

41, show a link to the URLs

@media print { a:after { content: " [" attr(href) "] "; }}Copy the code

42. Disable mobile Webkit selection highlighting

body {
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}
Copy the code

CSS3 dot pattern

body {
    background: radial-gradient(circle, white 10%, transparent 10%),
    radial-gradient(circle, white 10%, black 10%) 50px 50px;
    background-size: 100px 100px;
}
Copy the code

44, CSS3 checkered pattern

body {
    background-color: white;
    background-image: linear-gradient(45deg, black 25%, transparent 25%, transparent 75%, black 75%, black), 
    linear-gradient(45deg, black 25%, transparent 25%, transparent 75%, black 75%, black);
    background-size: 100px 100px;
    background-position: 0 0, 50px 50px;
}
Copy the code

45, CSS font property abbreviation

Font: italic small-caps bold 1.2em/1.0em Arial, Tahoma, Helvetica; }Copy the code

Paper page crimping effect

ul.box {
    position: relative;
    z-index: 1;
    overflow: hidden;
    list-style: none;
    margin: 0;
    padding: 0; 
}
ul.box li {
    position: relative;
    float: left;
    width: 250px;
    height: 150px;
    padding: 0;
    border: 1px solid #efefef;
    margin: 0 30px 30px 0;
    background: #fff;
    -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 40px rgba(0, 0, 0, 0.06) inset;
    -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 40px rgba(0, 0, 0, 0.06) inset; 
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 40px rgba(0, 0, 0, 0.06) inset; 
}
ul.box li:before,
ul.box li:after {
    content: '';
    z-index: -1;
    position: absolute;
    left: 10px;
    bottom: 10px;
    width: 70%;
    max-width: 300px; /* avoid rotation causing ugly appearance at large container widths */
    max-height: 100px;
    height: 55%;
    -webkit-box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);
    -moz-box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);
    box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);
    -webkit-transform: skew(-15deg) rotate(-6deg);
    -moz-transform: skew(-15deg) rotate(-6deg);
    -ms-transform: skew(-15deg) rotate(-6deg);
    -o-transform: skew(-15deg) rotate(-6deg);
    transform: skew(-15deg) rotate(-6deg); 
}
ul.box li:after {
    left: auto;
    right: 10px;
    -webkit-transform: skew(15deg) rotate(6deg);
    -moz-transform: skew(15deg) rotate(6deg);
    -ms-transform: skew(15deg) rotate(6deg);
    -o-transform: skew(15deg) rotate(6deg);
    transform: skew(15deg) rotate(6deg); 
}
Copy the code

Bright chain connection

a {
    color: #00e;
}
a:visited {
    color: #551a8b;
}
a:hover {
    color: #06e;
}
a:focus {
    outline: thin dotted;
}
a:hover, a:active {
    outline: 0;
}
a, a:visited, a:active {
    text-decoration: none;
    color: #fff;
    transition: all .3s ease-in-out;
}
a:hover, .glow {
    color: #ff0;
    text-shadow: 0 0 10px #ff0;
}
Copy the code

48, banner display with CSS3 features

.featureBanner {
    position: relative;
    margin: 20px
}
.featureBanner:before {
    content: "Featured";
    position: absolute;
    top: 5px;
    left: -8px;
    padding-right: 10px;
    color: #232323;
    font-weight: bold;
    height: 0px;
    border: 15px solid #ffa200;
    border-right-color: transparent;
    line-height: 0px;
    box-shadow: -0px 5px 5px -5px #000;
    z-index: 1;
}
.featureBanner:after {
    content: "";
    position: absolute;
    top: 35px;
    left: -8px;
    border: 4px solid #89540c;
    border-left-color: transparent;
    border-bottom-color: transparent;
}
Copy the code

49. Limit the display of ellipses to single lines of text

div{
    width: 65px;
    height: 30px;
    line-height: 30px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 14px;
}

Copy the code

50. Limit multiple lines of text beyond ellipses

div{
    overflow : hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}
Copy the code

51, CSS triangle drawing

.sj {
    width: 0; 
    height: 0;
    border-width: 100px;
    border-style: solid;
}

.sj-left {
    border-color: transparent pink transparent transparent;
}

.sj-right {
    border-color: transparent transparent transparent pink;
}

.sj-top {
    border-color: transparent transparent pink transparent;
}

.sj-bottom {
    border-color: pink transparent transparent transparent;
}
Copy the code

Adaptive text box automatic wrapping, limit width and height

div{
    display: inline-block;
    min-height: 15px;
    max-width: 78%;
    padding: 12px 10px;
    text-align: left;
    font-family: Microsoft YaHei;
    word-wrap: break-word;
}
Copy the code

53, ~ selector: find all siblings of an element

For example. The test ~. The name {background: red}Copy the code

54, + selector: find the next sibling of an element

For example, the test +. The name {background: red}Copy the code

Font-size: 0 font-size: 0

56. Use padding to scale the box

Outermost container {display:flex; display:flex-box; flex-wrap:warp; } outermost container > child {flex-basis:25%; } outermost container > child > parent {width:100%; padding-top:75%; position:relative; } outer container > child > parent > child {width:100%; height:100%; position:absolute; top:0; left:0; }Copy the code

Use pointer-events to disable event cursors from becoming default to prevent hover and hover events from being triggered

pointer-events:none;
Copy the code

58, use max-width to prevent the image from breaking the container

Img {max-width: 100%; Display: inline - block; }Copy the code

59. The use of pseudo-classes and pseudo-elements

// Pseudo-classes are represented by: and pseudo-elements are represented by :: To represent common pseudo-classes are: :hover :active: Focus :visited: Link :lang :first-child: last-Child :not :nth-child // They're just like HTML elements, But you can't use javascript to get the usual pseudo-elements ::before ::after ::first-letter ::first-line using :valid and :invalid for form validation html5 provides a similar approach to required Form attributes such as Email tel: Required // Specifies a form element with a required attribute :valid // specifies a required form element with a correct match :invalid // specifies a form element <input that does not match the specified requirement Type ="text" required /> input:vaild{border:1px solid green; box-shadow:inset 10px 0 0 green; } input:invaild{border:1px solid red; box-shadow:inset 10px 0 0 red; } Use :target to fold panels use :not to exclude other selectors :not([readonly]):not([.disabled]):not([text]), etc. Use :nth-child to change color :nth-child(2n+1){background:red; } :nth-child(2n){backgorund:blue; } beautify the selected text with ::selection p::selection{background:red; color:green; } placeholder ::placeholder{color:Red; } p::first-letter{font-size:30px; color:Red; padding:20px; } use ::first-line to mark the first line of the paragraph p::first-line{color:red; }Copy the code

Footer is always at the bottom of the page

<style>
body {
  position:absolute;
  width:100%;
  min-height:100%; 
}
#app {
  padding-bottom: 200px;
  height: 100%; 
  font-family: "Microsoft Yahei", Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  color: #333;
  min-width: 1190px;
}
</style>
footer {
  clear: both;
  position: absolute;
  bottom: 0px;
  width: 100%;
  background: #000;
  color: #fff;
  min-width: 1200px;
  height: 200px;
}
Copy the code

Two child elements one has the content automatically spread, the other is empty how to follow the height.

.f{
    display: flex;
    align-items: stretch;
}
Copy the code

62. Eliminate the Transition screen

.css {transform: translate3d (0, 0); }Copy the code