CSc 337 LECTURE 5: GRID LAYOUT AND JAVASCRIPT

Similar documents
CSc 337 LECTURE 6: JAVASCRIPT

EECS1012. Net-centric Introduction to Computing. Lecture Introduction to Javascript

JavaScript CS 4640 Programming Languages for Web Applications

JavaScript CS 4640 Programming Languages for Web Applications

EECS1012. Net-centric Introduction to Computing. Lecture 5: Yet more CSS (Float and Positioning)

URLs and web servers. Server side basics. URLs and web servers (cont.) URLs and web servers (cont.) Usually when you type a URL in your browser:

INFS 2150 Introduction to Web Development

INFS 2150 Introduction to Web Development

CSC Web Programming. Introduction to JavaScript

Web Programming Step by Step

JavaScript. History. Adding JavaScript to a page. CS144: Web Applications

JavaScript. History. Adding JavaScript to a page. CS144: Web Applications

Client-side Web Programming Basics

COMS 469: Interactive Media II

CSC Website Design, Spring CSS Flexible Box

Client-Side Web Technologies. JavaScript Part I

CSE 154 LECTURE 5: FLOATING AND POSITIONING

Such JavaScript Very Wow

Assignments (4) Assessment as per Schedule (2)

CITS1231 Web Technologies. JavaScript Math, String, Array, Number, Debugging

ITNP43: HTML Lecture 5

JAVASCRIPT BASICS. JavaScript String Functions. Here is the basic condition you have to follow. If you start a string with

Slide 1 CS 170 Java Programming 1 More on Strings Duration: 00:00:47 Advance mode: Auto

What is the Box Model?

JavaScript: The Basics

a Why JavaScript? jonkv interactivity on the web CGI JavaScript Java Applets Netscape LiveScript JavaScript 1: Example

Page Layout. 4.1 Styling Page Sections 4.2 Introduction to Layout 4.3 Floating Elements 4.4 Sizing and Positioning

Server side basics CSC 210

CGS 3066: Spring 2015 JavaScript Reference

Cascading Style Sheets for layout II CS7026

Pace University. Fundamental Concepts of CS121 1

The Importance of the CSS Box Model

Table Basics. The structure of an table

Mobile Site Development

Building Responsive Layouts

Unveiling the Basics of CSS and how it relates to the DataFlex Web Framework

JavaScript Basics. Mendel Rosenblum. CS142 Lecture Notes - JavaScript Basics

Zen Garden. CSS Zen Garden

JavaScript: Introduction, Types

Princess Nourah bint Abdulrahman University. Computer Sciences Department

Introduction to HTML & CSS. Instructor: Beck Johnson Week 5

PHP. Interactive Web Systems

PIC 40A. Lecture 10: JS: Wrapper objects, Input and Output, Control structures, random numbers. Copyright 2011 Jukka Virtanen UCLA 1 04/24/17

JavaScript Basics. The Big Picture

Client-Side Web Technologies. CSS Part II

710 Index Attributes, 127 action attribute, 263 assigning, bottom attribute, domain name attribute, 481 expiration date attribute, 480 8

Lecture 3: The Basics of JavaScript. Background. Needs for Programming Capability. Origin of JavaScript. Using Client-side JavaScript

CS193X: Web Programming Fundamentals

TAG STYLE SELECTORS. div Think of this as a box that contains things, such as text or images. It can also just be a

Fall Semester (081) Dr. El-Sayed El-Alfy Computer Science Department King Fahd University of Petroleum and Minerals

YouTube Break.

Make a Website. A complex guide to building a website through continuing the fundamentals of HTML & CSS. Created by Michael Parekh 1

Internet Programming 1 ITG 212 / A

Introduction to WEB PROGRAMMING

COMS 469: Interactive Media II

CSS: Lists, Tables and the Box Model

CSS: The Basics CISC 282 September 20, 2014

<style type="text/css"> <!-- body {font-family: Verdana, Arial, sans-serif} ***set font family for entire Web page***

IDM 222. Web Design II. IDM 222: Web Authoring II 1

CSS: Cascading Style Sheets

Web Design & Dev. Combo. By Alabian Solutions Ltd , 2016

Appendix D CSS Properties and Values

Lecture : 3. Practical : 2. Course Credit. Tutorial : 0. Total : 5. Course Learning Outcomes

Web Programming Step by Step

This course is designed for web developers that want to learn HTML5, CSS3, JavaScript and jquery.

Responsive Web Design (RWD)

INFS 2150 Introduction to Web Development

INFS 2150 Introduction to Web Development

Parashar Technologies HTML Lecture Notes-4

Navigation. Websites need a formalized system of links to allow users to navigate the site

Server side basics CS380

E ECMAScript, 21 elements collection, HTML, 30 31, 31. Index 161

JavaScript Introduction

PIC 40A. Midterm 1 Review

Page Layout Using Tables

CSS Cascading Style Sheets

Comm 244 Week 3. Navigation. Navigation. Websites need a formalized system of links to allow users to navigate the site

SEEM4570 System Design and Implementation Lecture 03 JavaScript

CSCU9B2: Web Tech Lecture 3

Introduction to Web Design CSS Reference

CSS Box Model. Cascading Style Sheets

Introduction to Web Design CSS Reference

PES DEGREE COLLEGE BANGALORE SOUTH CAMPUS 1 K.M. before Electronic City, Bangalore WEB PROGRAMMING Solution Set II

CISC 1600 Lecture 2.4 Introduction to JavaScript

The first sample. What is JavaScript?

COMP284 Scripting Languages Lecture 15: JavaScript (Part 2) Handouts

Introduction to using HTML to design webpages

CSS: Cascading Style Sheets

PHP / MYSQL DURATION: 2 MONTHS

UNIT -II. Language-History and Versions Introduction JavaScript in Perspective-

Styles, Style Sheets, the Box Model and Liquid Layout

Like most objects, String objects need to be created before they can be used. To create a String object, we can write

CSS: Layout Part 2. clear. CSS for layout and formatting: clear

HTML & CSS. Rupayan Neogy

CSS Selectors. element selectors. .class selectors. #id selectors

What is PHP? [1] Figure 1 [1]

Creating and Building Websites

IECD Institute for Entrepreneurship and Career Development Bharathidasan University, Tiruchirappalli 23.

COMP519 Web Programming Lecture 12: JavaScript (Part 3) Handouts

COMP519 Web Programming Lecture 8: Cascading Style Sheets: Part 4 Handouts

Transcription:

CSc 337 LECTURE 5: GRID LAYOUT AND JAVASCRIPT

Layouts Flexbox - designed for one-dimensional layouts Grid - designed for two-dimensional layouts

Grid Layout Use if you want rows and columns Works similarly to Flexbox outer container display: grid inner items end up in a grid

Grid Layout By default all items are in one column to change the number of rows and columns specify the grid template in the container CSS: grid-template-rows: width width grid-template-columns: width width width is the width of the column write a width as many times as columns you want

Grid Layout Example Example:.container { display: grid; grid-template-rows: 200px 200px 200px; grid-template-columns: 200px 200px 200px; } Creates a grid with three rows and three columns

fr Unit Calculates percentages of the container for you Example: grid-template-rows: 2fr 3fr gives you 2 rows first takes up 2/5 of vertical space second takes up 3/5 of vertical space

Specifying many columns Tedious to write out widths many times repeat Example: grid-template-rows: repeat(3, 1fr); Creates 3 rows of equal height

Template shorthand Create a grid template in one line: grid-template: rows / columns; Example: grid-template: repeat(3, 1fr) / repeat(3, 1fr);

Alignment vs. float vs flexbox vs grid vs. position 1. if possible, lay out an element by aligning its content horizontal alignment: text-align set this on a block element; it aligns the content within it (not the block element itself) vertical alignment: vertical-align set this on an inline element, and it aligns it vertically within its containing element 2. if alignment won't work and you want a one-dimensional layout try flexbox 3. if alignment won't work and you want a two-dimensional layout try grid 4. if flexbox and grid won't work, try floating 5. if floating won't work, try positioning the element absolute/fixed positioning are a last resort and should not be overused

The display property h2 { display: inline; background-color: yellow; } This is a heading This is another heading CSS output property display description sets the type of CSS box model an element is displayed with values: none, inline, block, run-in, compact,... use sparingly, because it can radically alter the page layout

Displaying block elements as inline <ul id="topmenu"> <li>item 1</li> <li>item 2</li> <li>item 3</li> </ul> HTML #topmenu li { display: inline; border: 2px solid gray; margin-right: 1em; } CSS Item 1 Item 2 Item 3 output lists and other block elements can be displayed inline flow left-to-right on same line width is determined by content (block elements are 100% of page width)

Details about inline boxes size properties (width, height, min-width, etc.) are ignored for inline boxes margin-top and margin-bottom are ignored, but marginleft and margin-right are not the containing block box's text-align property controls horizontal position of inline boxes within it text-align does not align block boxes within the page each inline box's vertical-align property aligns it vertically within its block box

Exercise - Boxes Generate the appearance on the next slide, starting from this HTML and CSS code. <div id="outer"> <div class="box"></div> <div class="box"></div> <div class="box"></div> <div class="box"></div> <div class="box"></div> <div class="box"></div> </div> #outer { border: 2px dashed black; padding: 10px; }.box { width: 100px; height: 100px; background-color: black; margin: 10px; }

Exercise - Boxes

Exercise - nested boxes Given the code below, write boxes.css to make the appearance on the next slide. <!DOCTYPE html> <html> <head> <link href="boxes.css" type="text/css" rel="stylesheet" /> </head> <body> <div id="outer-box"> <div id="inner-box"></div> </div> </body> </html>

Exercise - nested boxes The outer border of the box is red, the inner border of the box is black, and the inner background color of the box is yellow. Both the outer and inner borders have a width of 50 pixels. The yellow portion of the box has a width and height of 200 pixels. The overall box has a width and height of 400 pixels.

Combination layouts Most pages use many different layouts Combine and nest as needed. Example: https://www.cs.arizona.edu/

JavaScript It's time to make our pages interactive!

Client-side scripting client-side script: code runs in browser after page is sent back from server often this code manipulates the page or responds to user actions

What is JavaScript? a lightweight programming language ("scripting language") used to make web pages interactive insert dynamic text into HTML (ex: user name) react to events (ex: page load user click) get information about a user's computer (ex: browser type) perform calculations on user's computer (ex: form validation) a web standard (but not supported identically by all browsers) NOT related to Java other than by name and some syntactic similarities

JavaScript vs. Java interpreted like Python, not compiled like Java more relaxed syntax and rules "looser" data types like Python variables don't need to be declared like Python errors often silent (few exceptions) key construct is the function rather than the class "first-class" functions are used in many situations + = JavaScript contained within a web page and integrates with its HTML/CSS content

Linking to a JavaScript file: script <script src="filename" type="text/javascript"></script> <script src="example.js" type="text/javascript"></script> HTML HTML script tag should be placed in HTML page's head script code is stored in a separate.js file JS code can be placed directly in the HTML file's body or head (like CSS) but this is bad style (should separate content, presentation, and behavior)

A JavaScript statement: alert alert("message"); alert("ie6 detected. Suck-mode enabled."); JS JS output a JS command that pops up a dialog box with a message

Variables and types var name = expression; var age = 32; var weight = 127.4; var clientname = "Connie Client"; JS JS variables are declared with the var keyword (case sensitive) types are not specified, but JS does have types ("loosely typed") Number, Boolean, String, Array, Object, Function, Null, Undefined can find out a variable's type by calling typeof

Number type var enrollment = 99; var mediangrade = 2.8; var credits = 5 + 4 + (2 * 3); JS integers and real numbers are the same type (no int vs. double) same operators: + - * / % ++ -- = += -= *= /= %= similar precedence to Java many operators auto-convert types: "2" * 3 is 6

String type var s = "Connie Client"; var fname = s.substring(0, s.indexof(" ")); // "Connie" var len = s.length; // 13 var s2 = 'Melvin Merchant'; // can use "" or ' ' methods: charat, charcodeat, fromcharcode, indexof, lastindexof, replace, split, substring, tolowercase, touppercase charat returns a one-letter String (there is no char type) length property (not a method as in Java) concatenation with + : 1 + 1 is 2, but "1" + 1 is "11"

More about String escape sequences behave as in Java: \' \" \& \n \t \\ to convert between numbers and Strings: var count = 10; var s1 = "" + count; // "10" var s2 = count + " bananas, ah ah!"; // "10 bananas, ah ah!" var n1 = parseint("42 is the answer"); // 42 var n2 = parsefloat("booyah"); // NaN to access characters of a String, use [index] or charat: var firstletter = s[0]; var firstletter = s.charat(0); var lastletter = s.charat(s.length - 1);

Comments (same as Java) // single-line comment /* multi-line comment */ JS identical to Java's comment syntax recall: 4 comment syntaxes HTML:<!-- comment --> CSS/JS:/* comment */ Java/JS:// comment

for loop (same as Java) for (initialization; condition; update) { statements; } JS var sum = 0; for (var i = 0; i < 100; i++) { sum = sum + i; } JS var s1 = "hello"; var s2 = ""; for (var i = 0; i < s.length; i++) { s2 += s1[i] + s1[i]; } // s2 stores "hheelllloo JS

Math object var rand1to10 = Math.floor(Math.random() * 10 + 1); var three = Math.floor(Math.PI); JS methods: abs, ceil, cos, floor, log, max, min, pow, random, round, sin, sqrt, tan properties: E, PI

Logical operators Relational: > < >= <= Logical: &&! Equality: ==!= ===!== most logical operators automatically convert types. These are all true: 5 < "7" 42 == 42.0 "5.0" == 5 The === and!== are strict equality tests; checks both type and value: "5.0" === 5 is false

Boolean type var ilikejs = true; var ieisgood = "IE6" > 0; // false if ("web dev is great") { /* true */ } if (0) { /* false */ } JS any value can be used as a Boolean "falsey" values: 0, 0.0, NaN, "", null, and undefined "truthy" values: anything else converting a value into a Boolean explicitly: var boolvalue = Boolean(otherValue); var boolvalue =!!(othervalue);

Special values: null and undefined var ned = null; var benson = 9; var caroline; // at this point in the code, // ned is null // benson's 9 // caroline is undefined JS undefined : has not been declared, does not exist null : exists, but was specifically assigned an empty or null value Why does JavaScript have both of these?

if/else statement (same as Java) if (condition) { statements; } else if (condition) { statements; } else { statements; } JS identical structure to Java's if/else statement JavaScript allows almost anything as a condition

while loops (same as Java) while (condition) { statements; } JS do { statements; } while (condition); JS break and continue keywords also behave as in Java but do not use them in this class!

Arrays var name = []; var name = [value, value,..., value]; // empty array // pre-filled name[index] = value; // store element PHP var ducks = ["Huey", "Dewey", "Louie"]; var stooges = []; // stooges.length is 0 stooges[0] = "Larry"; // stooges.length is 1 stooges[1] = "Moe"; // stooges.length is 2 stooges[4] = "Curly"; // stooges.length is 5 stooges[4] = "Shemp"; // stooges.length is 5 PHP two ways to initialize an array length property (grows as needed when elements are added)

Array methods var a = ["Stef", "Jason"]; // Stef, Jason a.push("brian"); // Stef, Jason, Brian a.unshift("kelly"); // Kelly, Stef, Jason, Brian a.pop(); // Kelly, Stef, Jason a.shift(); // Stef, Jason a.sort(); // Jason, Stef JS array serves as many data structures: list, queue, stack,... methods: concat, join, pop, push, reverse, shift, slice, sort, splice, tos tring, unshift push and pop add / remove from back unshift and shift add / remove from front shift and pop return the element that is removed

Splitting strings: split and join var s = "the quick brown fox"; var a = s.split(" "); // ["the", "quick", "brown", "fox"] a.reverse(); // ["fox", "brown", "quick", "the"] s = a.join("!"); // "fox!brown!quick!the JS split breaks apart a string into an array using a delimiter can also be used with regular expressions surrounded by /: var a = s.split(/[ \t]+/); join merges an array into a single string, placing a delimiter between them

Defining functions function name() { statement ; statement ;... statement ; } JS function myfunction() { alert("hello!"); alert("how are you?"); } JS the above could be the contents of example.js linked to our HTML page statements placed into functions can be evaluated in response to user events