Suporte a padrões Web No Internet Explorer 10 e em múltiplos browsers Em múltiplas plataformas e em múltiplos dispositivos Rogério Moraes de Carvalho MVP de Visual C# HTML5 CSS3 ECMAScript 5.1 / 6 Single Page Application (SPA) CrossOrigin Resource Sharing Rogério Moraes de Carvalho MVP de Visual C# VITA Informática MVP Visual C# 2011-2012 MVP Visual C# 2012-2013 MVP ASP.NET 2009-2010 MVP ASP.NET 2010-2011 @rogeriomc rogeriomc.wordpress.com Trilha: Interoperabilidade no Desenvolvimento e Infraestrutura SUPORTE A PADRÕES WEB HTML5 Especificação do HTML5 • • • • Mantida pelo World Wide Web Consortium (W3C) Define um vocabulário e APIs associadas com HTML W3C Candidate Recommendation (17 Dec 2012) http://www.w3.org/TR/html5/ HTML5 Seções (Páginas Web mais semânticas) • article Composição autocontida num documento • section Seção genérica de um documento • nav Seção com links de navegação • aside Seção lateral do documento, separada do conteúdo HTML5 Seções (Páginas Web mais semânticas) • hgroup Agrupa um conjunto de elementos h1-h6 em cabeçalhos com múltiplos níveis • header Grupo introdutório ou de navegação de uma seção • footer Rodapé de uma seção HTML5 Agrupamento de conteúdo • figure Conteúdo autocontido, opcionalmente com uma legenda • figcaption Legenda do elemento pai figure, se presente HTML5 Conteúdo incorporado • video Usado para tocar um vídeo ou um áudio com legenda • audio Usado para tocar um áudio ou um stream de áudio • track Trilha de texto com marcações de tempo para mídias HTML5 Conteúdo incorporado • canvas Tela de mapa de bits para renderização de elementos visuais (dependente de resolução) • math (namespace MathML) Equações matemáticas seguindo a especificação MathML • svg (namespace SVG) Ilustrações vetoriais seguindo a especificação SVG HTML5 Formulários • input type="search" • Campo de busca type="tel" • Campo de telefone type="url" • Campo de URL Formulários • input type="email" • Campo de email type="datetime" • Campo de data e hora type="date" • Campo de data HTML5 Formulários • input type="week" • Campo de semana type="month" • Campo de mês type="number" • Campo de número Formulários • input type="range" • Campo de intervalo type="color" • Campo de cor type="email" • Campo de e-mail HTML5 Formulários Formulários • button • meter Botão legendado pelo seu conteúdo • progress Progresso de uma tarefa Medida escalar Demo 1 – HTML5 Produzindo a interface com o usuário com HTML5 CSS3 Especificações em módulos após a CSS Level 2 • • • • • • CSS Level 2 Revision 1 (base) CSS Style Attributes Media Queries Level 3 CSS Namespaces Selectors Level 3 CSS Color Level 3 CSS3 Principais prefixos de extensões específicas de browsers • • • • -ms- (Microsoft Internet Explorer) -moz- (Mozilla Firefox) -webkit- (Apple Safari, Google Chrome) -o- (Opera) Sintaxe: -prefixo-propriedade CSS3 Bordas • Bordas com imagens border-image-source: none | <image> border-image-slice: [<number> | <percentage>]{1,4} && fill? border-image-width: [<length> | <percentage> | <number> | auto ]{1,4} border-image-outset: [<length> | <number>]{1,4} border-image-repeat: [ stretch | repeat | round | space ]{1,2} border-image: <border-image-source> || <border-imageslice> [ / <border-image-width> | / <border-image-width>? / <border-image-outset> ]? || <border-image-repeat> CSS3 Bordas • Bordas arredondadas border-top-left-radius: [<length> | <percentage>]{1,2} border-top-right-radius: [<length> | <percentage>]{1,2} border-bottom-right-radius: [<length> | <percentage>]{1,2} border-bottom-left-radius: [<length> | <percentage>]{1,2} border: [<length>|<percentage>]{1,4} [ / [<length> | <percentage>]{1,4} ]? CSS3 Fundo • Origem do fundo background-origin: <box> [ , <box> ]* • <box>: padding-box | border-box | content-box • Corte do fundo background-clip: <box> [ , <box> ]* • Tamanho do fundo background-size: <bg-size> [ , <bg-size> ]* • <bgsize>: [<length>|<percentage> | auto ]{1,2} | cover | contain CSS3 Fundo • Múltiplas imagens de fundo background-image: <bg-image> [ , <bg-image> ]* • <bg-image>: <image> | none • A propriedade aceitava uma única imagem de fundo no CSS1 • Agora, a propriedade aceita várias imagens de fundo no CSS3 CSS3 Fundo • Gradiente de cores no fundo background: linear-gradient( [ [<angle> | to <side-orcorner>] ,]? <color-stop>[, <color-stop>]+; • <side-or-corner> = [left | right] || [top | bottom] background: radial-gradient( [ [ <shape> || <size> ] [ at <position> ]? , | at <position>, ]? <color-stop> [ , <color-stop> ]+ CSS3 Cores • Sintaxe das novas funções de cores Extensão do modelo de cores RGB (red-green-blue) para incluir “alpha” • rgba(<red>, <green>, <blue>, <alpha-opacity>) Modelo de cores HSL (hue-saturation-lightness) • hsl(<hue>, <saturation>%, <lightness>%) Extensão do modelo de cores HSL (hue-saturation-lightness) para incluir “alpha” • hsla(<hue>, <saturation>%, <lightness>%, <alpha-opacity>) CSS3 Cores • Opacidade opacity: <alphavalue> | inherit • O valor deve estar no intervalo de 0.0 (completamente transparente) até 1.0 (completamente opaco) CSS3 Sombras • Sombras em caixas box-shadow: none | <shadow> [ , <shadow> ]* • <shadow>: inset? && [ <length>{2,4} && <color>? ] • Sombras em textos text-shadow: none | [ <length>{2,3} && <color>? ]# CSS3 Fontes externas • Regra @font-face @font-face { <font-description> } • <font-description>: font-family: <family-name>; src: [ <uri> [format(<string>#)]? | <font-face-name> ]# font-style: normal | italic | oblique font-weight: normal | bold | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 font-stretch: normal | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded CSS3 Fontes externas • Exemplo de uso da regra @font-face @font-face { font-family: ChunkFiveRegular; src: url('../fonts/chunkfive.eot') format('embedded-opentype'), url('../fonts/chunkfive.woff') format('woff'), url('../fonts/chunkfive.ttf') format('truetype'), url('../fonts/chunkfive.svg') format('svg'); font-weight: normal; font-style: normal; } CSS3 Layout em múltiplas colunas • Largura da coluna column-width: <length> | auto • Número de colunas column-count: <integer> | auto • Atalho columns: <column-width> || <column-count> • Espaço entre as colunas column-gap: <length> | normal CSS3 Media queries • Inclusão de características na regra @media no CSS3 width height device-width device-height orientation aspect-ratio device-aspect-ratio color color-index monochrome resolution scan grid CSS3 Transformações • Propriedades de transformações transform: none | <transform-function> [ <transformfunction> ]* • <transform-function> matrix(<number>, <number>, <number>, <number>, <number>, <number>) translate(<translation-value>[, <translation-value>]) scale(<number>[, <number>]) rotate(<angle>) … Demo 2 – CSS3 Produzindo a interface com o usuário com CSS3 ECMAScript 5.1 / 6 Histórico do ECMAScript até a edição 5.1 Desenvolvimento pela Netscape iniciou em 1994 ECMA-262 1a edição – junho de 1997 ISO/IEC 16262 aprovado – abril de 1998 ECMA-262 2a edição – junho de 1998 ECMA-262 3a edição – dezembro de 1999 ECMA-262 5a edição – dezembro de 2009 ISO/IEC 16262 3a edição – abril de 2011 ECMA-262 edição 5.1 – junho de 2011 ECMAScript 5.1 / 6 ECMAScript 6 (projeto “Harmony”) • Prazo estimado de conclusão: dezembro de 2013 Avanços significativos planejados Um grande número de características em desenvolvimento Integração com browsers futuros planejada • Teste 262 Conjunto integrado de testes (mais de 10.000 testes) http://test262.ecmascript.org/ Single Page Application (SPA) Aplicação Web SPA • Interações do lado do cliente numa única página Usando HTML5, CSS3 e JavaScript • Consumo de serviços do lado do servidor Frequentemente por meio de serviços RESTful Suporte no Visual Studio 2012 • ASP.NET and Web Tools 2012.2 SPA Template Cross-Origin Resource Sharing Especificação do CORS • Mantida pelo World Wide Web Consortium (W3C) • Define um mecanismo que permite requisições do lado do cliente de origens cruzadas • W3C Candidate Recommendation (29 Jan 2013) • http://www.w3.org/TR/cors/ Demo 3 – JavaScript Acessando serviços RESTful do lado do cliente Padrões Web HTML5 Specification & CSS Snapshot 2010 (World Wide Web Consortium) Chrome Experiments (Google) MDN HTML5 (Mozilla) HTML5 Labs (Microsoft) Apple HTML5 (Apple) ECMAScript Language Specification Edition 5.1 (ECMA International) Padrões Web