YeeKal
css

CSS basic

YeeKal • •
"#css"

css

intro

basic

​ css definition

​ css rules

​ css comments

text property

​ font

​ text

element

​ box model

​ size

​ background

​ list style

​ table style

​ link style

​ mouse cursor

css3 basic

​ rounded corners

​ box-shadow

​ transparency effect

​ presudo

​ world-wrap

​ @font-face

​ gradients

​ background-

​ opacity

trans

​ transition

​ transform

​ animation

​ 3dtransform

intro

CSS:Cascading Style Sheets, to separate style from content

basic

css definition

inline CSS

<p style="color:white;background-color:gray;">
  This is an example off inline styling.
</p>

embeded css

internal styles defined within \<style> element,inside the head section

<html>
<head>
  <style>
    p{
      color:white;
      background-color:gray;
    }
  </style>
</head>

<body>
   <p>I am happy to meet you again!</p> 
</body>
</html>

external css

styling rules are contained in a single text file saved with .css extension.

<head>
  <link rel="stylesheet" href="example.css">
</head>

the example.css

p{
  color:white;
  background-color:gray;
}

css rules

css syntax

a stle rule has three parts: selector property value

h1 {color:orange}

type selector

targets elements types on the page.

for example, to target all the paragraphs on the page:

p{
  color:red;
  font-size:20px;
}

id selector

html:

<div id="intro">
  <p>i love you.</p>
</div>

css:

#intro{
  color:white;
}

class selector

html:

<div>
  <p class="sunday">a good day.</p>
  <p class="badday">a rainy day</p>  
</div>

<p class="sunday">another sun day</p>

css:

.sunday{
  color:red;
}
.badday{
  color:blue;
}
  • id can only be appliedonce;while class can be possessed by many owners.

descendant selector

派生选择器

html:

<div id ="intro">
  <p class="exe1">This paragraph contains <em>this </em>to be selected.</p>
  <p class="exe1">this will not</p>
</div>

css:

#intro .exe1 em{
  color:pink;
}

css comments

/* comments here*/
/*
multilines comments;
line;
*/
p{
  color:orange;
}

css cascade and inheritance

a cascade contains three main sources:

  • stylesheets created
  • broweser's default styles
  • strles specified by users

text property

font

font-family

  • font family: a specific font family
  • generic family: a group of font families

five generic family:

  • serif
  • sans-serif
  • monospace
  • cursive
  • fantasy
p .serif{
  font-family:"times new roman",times,serif;
}
p .monospace{
  font-family:"courier new",courier,monospace;
}
/*
use comma to indicate they are alternative
quotation marks to quote more than one word
add the generic family as a fallback
*/

font-size

keywords: x-small, small, medium,large,larger,x-large

numerical values: px,em;em=default px

font-style

italic
normal
oblique
/*<i> tag will produce exactly the same result as the italic font style.*/

font-weight

100-900
normal  400
light
bold    700
bolder

font-variant

normal
small-caps

color

color name: red, white,.....

rgb: color:rgb(255,0,0)defines individual values for red, green, blue

hexadecimal values: color:#FFFFFF

text

text-align

left
right
center
justify
/*justify: each line is strenched to get equal width*/

vertical-align

top
middle
bottom
/* most used in table*/

baseline
sub
super
+/- xx(px/pt/cm)

text-decoration

none
inherit
overline
underline
line-through

@deprecated
  blink

text-indent

p{
  text-indent:30px
}
/*negative value is valid*/

text-shadow

text-shadow:4px 2px 4px grey;
/*
4px - x-coordinate
2px - y-coordinate
4px - the blur radius
grey - the color of the shadow
*/

text-transform

capitalize
uppercase
lowercase

letter-spacing

letter-spacing:normal;
letter-spacing:4px;
/*negative value is valid*/

word-spacing

as above

white-space

pre
pre-line
pre-wrap

property

box model

all html elements can be considered as boxes:

box model

properties work in the same order: top right bottom left

total width: padding+border+margin+content

width and height properties: content

background-color cover: content + padding

size

border

p{
  padding:10px;
  border:5px solid orange;
}

p{
  padding:10px;
  border-width:5px;
  border-style:solid;
  border-color:orange;
}

/*
none of the border properties will have any effect unless the border-style property is set.
*/
borderstyle:dotted/dashed/double/....
border-top-style
border-right-style
border-bottom-style
border-left-style

width and height

  1. numerical value(pixels)
  2. percents

min-width/min-height/max-width/max-height

background-

background-color

background-image

background-image:url("URL")

background-repeat

{
  background-image:url("URL");
  background-repeat:repeat-x;
}

repeat-x: horizontal

repeat-y: vertical

no-repeat: show once

repeat:

inherit: inheritance from parent element

background-attachment

sets whether a background image is fixed or scrolls with the rest of the page.

fixed;
scroll;
inherit;

list style

list-style-type

list style all types from w3school

ol .lower-alpha{    /*ordered list*/
  list-style-type:lower-alpha;
}

ul .circle{         /*unordered list*/
  list-style-type:circle;
}

list-style-image

list-style-image:url("URL");

list-style-position

list-style-position:inside;
/*outside is the default value*/

list-style

list-style:square outside none;
/*equals to*/
list-style-type:square;
list-style-position:outside;
list-style-image:none;
/*the missing value will set the default*/

table style

border-collapse

  • separate: double borders
  • collapse: single

border-spacing

/*distance between two borders*/
border-spacing:20px 40px;

caption-side

​ specify the placement of table caption

  • top
  • bottom

empty-cells

  • show
  • hide

table-layout

​ specify the width of table columns

  • auto (default)
  • fixed

preudo selectors for link:

  • a:link unvisited links
  • a:visited visited links
  • a:hover when the mouse is over it
  • a:active once you click on it

property:

  • color
  • font-family
  • text-decoration (:none) remove underline
  • ...

mouse cursor

cursor: specifies the desired cursor style when you mouse over an element

possible value

element

列表

ul li{
  display:block;
  float:left;
  width:30px;
}
/*为了让列表项水平显示,将其设置为左浮动。为了定义宽度则设为块级元素*/
/*当然设置为inline内联元素也可以水平,但却不能定义宽度*/

display

display

  • block: change an inline element to a block element
  • inline: reverse
  • none: hide elements; as no such element
  • list-item
  • grid
  • ...

visibility

  • hidden: remain space without content
  • visible

position

position

  • static: default
  • fixed: will not move even the window is scrolled
  • relative: relative to its normal position
  • absolute

top/right/bottom/left

floating

​ for img floating in the text

​ for elements next to each other

​ 脱离原来的文档流,不占位置

  • left
  • right
  • none

clear

elements that come after the floating element will flow around it

use clear

  • left
  • right
  • both

overflow

specify the content overflowing the box

  • scroll: add scroll bar
  • auto: adding scroll bar when overflow happens, not add if not
  • hidden: the rest remains invisible
  • visible: default, no bars

z-index

whos num is larger, who lay upper

as seeing from z-axis

position elements is necessary

对齐

//水平对齐。'!doctype'
margin-left:auto;
margin-right:auto;

css3 basic

vender prefixe

to add support for new css features

-webkit-border-radius:24px;
/*
most browsers today will work without prefixes
it is essential to know these for backgrounds capability
*/

browser prefixes

rounded corners

border-radius:20px;

/*specify values respectively as order:top-left  top-right  bottom-right  bottom-left*/
border-radius: 0 0 20px 20px;

/*create a circle*/
div{
  height:200px;
  width:200px;
  border-radius:100px;
  background-color:green;
  color:white;
}

box-shadow

box-shadow:10px 10px #888888;
/*
10px:  horizontal offset
10px:  vertical offset
#:     color
for material design
*/

box-shadow:10px 10px 8px -4px #888888;
/*
optional values:
blur and spread
*/
/*values can be set negative except blur-option*/

box-shadow:inset 10px 10px 5px #888888;
/*create an inner shadow with keyword:inset
凹陷/凸起感*/

/*multiple layer*/
box-shadow:
inset 10px 10px 5px #888888,
0 0 10px 30px #ffdab9;

transparency effect

rgba(red,green,blue,alpha)

div{ 
background: linear-gradient(90deg, 
     rgba(255, 255, 255, 0) 0%, 
     rgba(255, 255, 255, 0.2) 25%, 
     rgba(255, 255, 255, 0.2) 75%, 
     rgba(255, 255, 255, 0) 100%);
box-shadow: 0 0 25px rgba(0, 0, 0, 0.1),
     inset 0 0 1px rgba(255, 255, 255, 0.6);
}
/*beautiful*/

presudo

presudo class

:

html:

<div id="parent">
   <p>First paragraph</p>
   <p>Second paragraph</p>
   <p>Third paragraph</p>
   <p>Fourth paragraph</p>
</div>

css:

#parent p:first-child {
   color: green;
   text-decoration: underline;   
}
/*matches the first p in div with id named parent*/
/*last-child*/

presudo element

used to select specific parts of an elements

five elements in css, starting with a double colon ::

::first-line - the first line of the text in a selector

::first-letter - the first letter of the text in a selector

::selection - selects the portion of an element that is selected by a user

::before - inserts some content before an element

::after - inserts some content after an element

p::before{
  content:url("img.jpg");
}

word-wrap

word-wrap:normal;   /*a long word not break*/
word-wrap:break-word;   
/*
when the word-wrap property is set to break-word, the browser breaks a word when it is too long for fit within its container.
*/

@fonr-face

allows custom fonts to be loaded into a webpage.

In Internet Explorer 8 and earlier, the URL must point to an Embedded OpenType (eot) file, while Firefox, Chrome, etc. support True Type Fonts (ttf) fonts and OpenType Fonts (otf).

@font-face{
  font-family:delicious;
  src:url('delicilous-roman.otf');
  font-weight:bold;
}

/*ie has a built-in bug when multiple @font-face rules are defined
using #iefix as following example*/
@font-face { 
   font-family: Delicious; 
   src: url('Delicious-Roman.ttf');
   src: url('Delicious-Roman.eot?#iefix'); 
}

gradients

linear gradient

background:-moz-linear-gradient(blue 20%, yellow 30%, green 85%);
 background:linear-gradient(white 20%,gray 50%,green 50%,red 80%);
/*sharp color
colorname/rga/rgba/hex values/hsl*/

background:-webkit-linear-gradient(left,white 20%,gray 50%,green 50%,red 80%);
/*
change direction:
left/right/top/botttom/bottom right
0-180deg
*/

background:-moz-repeating-linear-gradient(blue, green 20px);
/*repeating per 20px*/

radical-gradient

/*universal format*/
radial-gradient(position size/shape color);
/*
shape:
circle
eclipse
position: top left/0% 0%/20px 20px
*/
background:radial-gradient(white 15%,black                  15%,rgba(200,200,200,0.2) 100%);

background-

background-size

specify the size of background images, using either lengths or percentages

div{
  height:150px;
  width:200px;
  border:1px solid #000;
  background:url("css.png") no-repeat 50% 50%;
  background-size:100px 100px;
}

/*keywords*/
contain;
cover;

background-clip

specify the painting area of the background

still work with image

border-box: (default)

padding-box:

content-box:

border: 20px solid rgba(0, 0, 0, 0.3);
background-clip:padding-box;
/*Transparency effect is achieved with the background-clip:padding-box. Without it, the background of the box also goes beneath the borders, making it non-transparent.*/

multiple backgrounds

div {
  width: 400px;
  height: 300px;
  background-image: url(csslogo.png), url(csscode.jpg);
  background-position: right bottom, left top;
  background-repeat: no-repeat;
} 
/*another way*/
background: url(csslogo.png) right top no-repeat, 
url(csscode.jpg) left top no-repeat; 

opacity

an excellent means of adding opacity to any element

#img1{
  opacity:0.5;
}
/*opacity value must be between 0.0-1.0*/

/*to work in ie*/
opacity:0.5;
filter.alpha(opacity=50);

trans

transition

allow us to change one property value to another one over a given duration

transition-property - specifies the property to be transitioned transition-duration - specifies the duration over which transitions should occur transition-timing-function - specifies how the pace of the transition changes over its duration transition-delay - specifies a delay (in seconds) for the transition effect

example:

div {
   width: 50px;
   height: 50px;
   background: #32CD32;
   transition: width 3s;
}
div:hover {
   width: 250px;
}
/*if you hover the div element it will anlarge duriing 3 seconds*/

transition-timing-function

ease - the animation starts slowly, then accelerates quickly. ease-in - starts slowly, then accelerates, and stops abruptly. ease-out - starts quickly, but decelerates to a stop. ease-in-out - similar to ease, but with more subtle acceleration and deceleration. linear - constant speed throughout the animation; often best for color or opacity changes.

cubic-besizer(): value from0 to 1

transition-timing-function: cubic-bezier(0,0,1,1);

transform

rotate

transform:rotate(10deg);/*negative value will generate counter-clockwise*/

transform-origin

change the position of the transform point

transform:rotate(15deg);
transform-origin:25% 75%;

translate

transform:translate(100px,50px);/**/

skew

transform:skew(30deg,30deg);/*平行四边形*/

scale


multiple trans

transform:rotate(45deg) translate(100px);/*no comma*/
/*transition定义了类型,时间,在动作中定义transform具体的行为*/
div
{
width:100px;
height:100px;
background:yellow;
transition:width 2s, height 2s;
-moz-transition:width 2s, height 2s, -moz-transform 2s; /* Firefox 4 */
-webkit-transition:width 2s, height 2s, -webkit-transform 2s; /* Safari and Chrome */
-o-transition:width 2s, height 2s, -o-transform 2s; /* Opera */
}

div:hover
{
width:200px;
height:200px;
transform:rotate(180deg);
-moz-transform:rotate(180deg); /* Firefox 4 */
-webkit-transform:rotate(180deg); /* Safari and Chrome */
-o-transform:rotate(180deg); /* Opera */
}

animation

div {
   width: 100px;
   height: 100px;
   background-color: red;
   animation-name: colorchange;     /*bind name*/
   animation-duration: 1s;          /*time*/
}
@keyframes colorchange {            /*from to*/
   0% {background-color: red;}
   50% {background-color: green;}
   100% {background-color: blue;}
} 

animation-name

animation-duration

animation-timing-function

same as transtion-timing-function

animation-delay

​ s/ms(milliseconds)

animation-iteration-count

numerical/infinite

animation-iteration-count:5;  /*repeat 5 times*/

animation-direction

The values can be set as: normal - the default value, which means it plays forward from 0 % to 100%. reverse - plays the keyframe in an opposite direction from 100 % to 0% alternate - the animation first runs forward, then backward, then forward.

multiple include

div {
   animation-name: colorchange;
   animation-duration: 3s;
   animation-timing-function: ease-in;
   animation-delay: 1s;
   animation-iteration-count: infinite;
   animation-direction: reverse;
}
/*can be revised as following*/
div { 
   animation: colorchange 3s ease-in 1s infinite reverse;
}
/*order can not be altered*/

3dtransform

rotate

rotate3d=rotatex+rotatey+rotatez

div.X {
   transform: rotateX(150deg);
}
div.Y {
   transform: rotateY(150deg);
}
div.Z {
   transform: rotateZ(150deg);
}

translate

#mybox1 {
   transform: translate3d(-20px, 4em, 10px);
}
/*equal to*/
#mybox1 {
   transform: translateX(29px) 
   translateY(5em) 
   translateZ(-13px);
}

percpective

div.empty-div {
   perspective: 100px;
}
div.green-div {
   transform: rotateX(45deg);
}
/*The perspective property only affects 3D transformed elements.*/