// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= HTML5 - 第 2 部分：在 HTML5 应用程序中使用 CSS 样式表的视频
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: HTML5 - 第 2 部分：在 HTML5 应用程序中使用 CSS 样式表的视频 - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, HTML5 - 第 2 部分：在 HTML5 应用程序中使用 CSS 样式表的视频

|===
|此截屏视频演示了 NetBeans IDE 所提供的可帮助您在 HTML5 应用程序中创建和修改 CSS 规则的一些工具。此截屏视频演示了如何在 IDE 中使用 CSS 窗口和向导，以及如何使用集成 NetBeans 的 Chrome 浏览器以可视方式在 CSS 规则中查找页中的元素。

作者：Ken Ganfield
播放时长：7:11

link:http://bits.netbeans.org/media/html5-css-screencast.mp4[+下载/观看全图+] (39 MB)

 

|有关在 NetBeans IDE 中使用 HTML5 应用程序的更多信息，请观看以下截屏视频。

* link:html5-gettingstarted-screencast.html[+ HTML5 - 第 1 部分：HTML5 应用程序入门+]
* link:html5-css-screencast.html[+ HTML5 - 第 2 部分：在 HTML5 应用程序中使用 CSS+]

link:/about/contact_form.html?to=3&subject=Feedback:%20Video%20of%20Working%20with%20CSS%20Stylesheets%20in%20HTML5%20Applications[+发送有关此教程的反馈意见+]
 
|===


== 相关链接

* 演示：link:html5-gettingstarted-screencast.html[+HTML5 - 第 1 部分：HTML5 应用程序入门指南+]
* 演示：link:html5-javascript-screencast.html[+HTML5 - 第 3 部分：在 HTML5 应用程序中测试和调试 JavaScript+]
* link:../webclient/html5-gettingstarted.html[+HTML5 应用程序入门 +]
* link:../webclient/html5-editing-css.html[+在 HTML5 应用程序中使用 CSS 样式表+]
* link:../webclient/html5-js-support.html[+在 HTML5 应用程序中调试和测试 JavaScript+]
* link:http://wiki.netbeans.org/HTML5[+NetBeans IDE 中的 HTML5 支持 Wiki 页+]
* link:../../trails/php.html[+PHP 和 HTML5 学习资源+]

* link:http://wiki.netbeans.org/HTML5[+NetBeans IDE 中的 HTML5 支持 Wiki 页+]
* link:../../trails/java-ee.html[+Java EE 和 Java Web 学习资源+]
