ExtJs自学教程(2):从DOM看EXTJS

news/2023/10/4 0:31:44
《二》 从DOM看EXTJS


  看标题可能有人会问,为啥好好的例子不看,得从DOM看起呢?答案是目标只为了一个:自运行结果把EXTJS看得更清楚点

  首先,要看得靠点工具,带点放大镜什么吧?对。我们需要的工具就是Internet Explorer Developer Toolbar(简称IEDevToolBar),它是一个IE查看DOM的结构的工具,还具备Style Trace,Debug style的功能,可谓功能强劲。我们在IE下分析DOM结构,靠的就是它了。当然,如果你选择FireFox,fireBug也是一个不错的选择,但是通常客户要求的是优先支持IE,那么还是在IE下调试的好。

  那么,简单的讲讲IEDevToolBar的使用,看下图:



  最左边的是页面的DOM树查看区,中间是属性和样式编辑区,该区可以自增加和修改某个元素的属性和样式,这样就可以快速的调试某个属性了, Show Read-Only Properties可以查看只读的属性。右边是当前的样式查看。Show Default Value 可以查看默认的css样式。在Current Style里,也有一个很特别的功能,就是在某个样式信息上点右键,可以Trace Style,从而跟踪到该样式是由哪个css控制的,这样就能很快的定位到某个样式的调试需要修改哪个css。选择某个元素,你既可以通过箭头选择工具(ID Developer Toolbar上第一排工具条第一个)来选择,也可以通过直接在DOM树里选择某个结点。在DOM树里选择的结点在HTML页面里会先边框闪烁一会,再显示为一个蓝色的框。通过鼠标工具选择的,则直接加上一个蓝色的框。

  简单的介绍过了,接下来的。我们要用这个工具去解决一些存在的问题。

首先,编写一小段代码,实现一个简单的panel显示效果:

new Ext.Panel({renderTo: 'panelDiv',title: '标题',width: 200, height: 200,frame: true,items:[{xtype: 'button',text: '按钮'},{html: '一些文本'}],buttons:[{text: '底部按钮'}]
});


运行效果如下:



  这是一个最常见不过的Ext Panel相关应用的实现。打开看到发现原DIV并没有改变,只是在其内部增加了一系列的DIV。这样你就清楚了,renderTo并没有改变原来的对象。而是在其内部生成了一系列的PANEL形成我们看到的组件效果。依次看各DIV的class命名,你会发现Ext的css命名是很合理的。都带有当前对象的xtype名,例如当前这个panel就成了"x-panel"。

  好了,DIV内部暂时不细说了。目前既然要解决问题,那么我们先“制造”点麻烦(一般想成为高手都得没事找点麻烦的,例如顺着不走倒着走之类)。

一个很小的改动,把 frame: true 给去掉,看渲染,看看成啥样了:



得,“一些文本”那部分被一个难看的框给框住了。接下来就要开始分析了。从<div id=panelDiv>开始一级级找下来,找到<DIV class=x-panel id=ext-comp-1003>这个,看选择的形状。和出问题的那个框差不多了。根据这个class使用的名称为x-panel和源代码看来。选择的这个就是代码:
{ html: '一些文本' }
生成的这部分了。 接下来便需要跟踪这部分的样式了,看看究竟是哪里出了问题。从id=ext-comp-1003这个出发向下级就3个结点,找起来也比较快。

  懂点css的就知道,如果不是内部覆盖颜色,那么边框效果就是border制造出来的了。通过IEDevToolBar的选择查看形状(选择结点查看形状这个很有用,能帮助我们快速的定位到处理的结点),不是通过覆盖颜色做出的边框效果。那么肯定是border-color制造的问题了。跟踪第一级,Current Style里border-width均为0,跟踪第二级,里面根本没去定义border-width,那么继续向下找。跟踪第三级别,问题找到了。


看画圈的部分,由于设置了border为1px,导致了我们发现的难看的边框的出现。这样就想到了设置style,根据class的命名,我们推测是body的style的问题。那么“想当然”,我们设置一下bodyStyle看看:

  },{bodyStyle: 'border:none',html: '一些文本'}],

OK了!是不是很有成就感。先Cheers一下~

....
....

然后很遗憾的告诉你,API里其实已经详细的说了:

bodyBorder : Boolean
True to display an interior border on the body element of the panel, false to hide it (defaults to true). This only applies when border == true. If border == true and bodyBorder == false, the border will display as a 1px wide inset border, giving the entire body element an inset appearance.

那么就是说,把子元素的border设置为false,问题就解决了。

  发现API的重要性了吧?其实很多问题,文档上面都已经详细的说了,只怪你没仔细看:),不过不要懊恼,这不是忽悠你,只是告诉你,有这样一种解决问题的途径而已。所谓条条大路通罗马,有了从DOM的角度去分析Extjs,就多了一条解决问题的方案。能解决问题的方案都是可性方案,至于哪条最好,这就得靠你自己多“磨练”了。例如调整form layout的label宽度和合适的元素位置,有了IEDevToolBar的帮助,将会变得方便很多。

  至此两章,该教程也就完结了。从API使用ExtJs是编写功能代码去生成功能页面,而本章则是由页面结果去反向分析功能代码。一正一反,对比学习。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.yaotu.net/news/605603.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java过滤器和监听器详解

过滤器 1、Filter工作原理&#xff08;执行流程&#xff09; 当客户端发出Web资源的请求时&#xff0c;Web服务器根据应用程序配置文件设置的过滤规则进行检查&#xff0c;若客户请求满足过滤规则&#xff0c;则对客户请求&#xff0f;响应进行拦截&#xff0c;对请求头…

Java Web中的EL(表达式语言)详解

Java Web中的EL&#xff08;表达式语言&#xff09;详解 表达式语言(Expression Language)简称EL&#xff0c;它是JSP2.0中引入的一个新内容。通过EL可以简化在JSP开发中对对象的引用&#xff0c;从而规范页面代码&#xff0c;增加程序的可读性及可维护性。EL为不熟悉Java语言页…

PowerDesigner入门教程

PowerDesigner安装方法:http://dev.firnow.com/course/3_program/java/javajs/20090908/174375.html安装完这2个软件了,接着就开始使用吧,还是和以前一样,先提出需求,再做实例,因为我们之所以使用它们,肯定是因为它们能巧妙的解决某种问题,不然我们干嘛花那么多时间和硬盘空间安…

PowerDesigner(一)-PowerDesigner概述(系统分析与建模)

PowerDesigner概述 PowerDesigner是Sybase公司推出的一个集成了企业架构&#xff0c;UML(统一建模语言)和数据库的CASE(计算机辅助软件工程)工具。它不仅可以用于系统设计和开发的不同阶段(即业务分析&#xff0c;概念模型设计&#xff0c;物理模型设计以及面向对象开发阶段)&a…

PowerDesigner(二)-项目和框架矩阵

项目和框架矩阵 项目是PowerDesigner 15的新概念&#xff0c;通过项目系统分析/设计人员可以对模型以及各类文档进行分组。项目也可以包含框架矩阵&#xff0c;以表格的形式体现各个模型之间的关系。 项目和框架矩阵解决了如何对模型进行统一管理的问题。 1.创建框架矩阵(FEAF-…

PowerDesigner(三)-企业架构模型

企业架构模型(Enterprise Architecture Model,EAM)是PowerDesigner 15新增的功能&#xff0c;它能够以图形的方式展现企业架构&#xff0c;从而取代文字描述&#xff1b;以偏向非技术性的表达方式&#xff0c;从不同层面表达不同的图示结果。 企业架构模型从业务层&#xff0c;…

PowerDesigner(四)-业务处理模型

业务处理模型 业务处理模型(Business Process Model,BPM)以业务需求作为出发点&#xff0c;用图形的方式描述系统的任务和业务流程&#xff0c;注重的是处理过程中数据流程。业务处理模型是从业务人员的角度对业务逻辑和规则进行详细描述的概念模型&#xff0c;并使用流程 图表…

PowerDesigner(五)-概念数据模型(CDM生成LDM,PDM和OOM)

概念数据模型 概念数据模型(Conceptual Data Model,CDM)&#xff1a;表达的是数据整体逻辑结构&#xff0c;该结构独立于任何软件和数据存储结构&#xff0c;即它只是系统分析人员&#xff0c;应用程序设计人员&#xff0c;维护人员和用户之间相互理解的共同语言&#xff0c;并…

PowerDesigner(六)-物理数据模型(PDM逆向工程)

物理数据模型PDM 物理数据模型(Physical Data Model,PDM):在数据库的逻辑结构设计好之后&#xff0c;就需要完成其物理设计&#xff0c;PDM就是为实现这一目的而设计的。 物理数据模型是以常用的DBMS(数据库管理系统)理论为基础&#xff0c;将CDM/LDM中所建立的现实世界模型生…

PowerDesigner(八)-面向对象模型(用例图,序列图,类图,生成Java源代码及Java源代码生成类图)

面向对象模型 面向对象模型是利用UML(统一建模语言)的图形来描述系统结构的模型&#xff0c;它从不同角度实现系统的工作状态。这些图形有助于用户&#xff0c;管理人员&#xff0c;系统分析人员&#xff0c;开发人员&#xff0c;测试人员和其他人员之间进行信息交流。这里主要…

PowerDesigner(九)-模型文档编辑器(生成项目文档)

模型文档编辑器 PowerDesigner的模型文档(Model Report)是基于模型的&#xff0c;面向项目的概览文档&#xff0c;提供了灵活&#xff0c;丰富的模型文档编辑界面&#xff0c;实现了设计&#xff0c;修改和输出模型文档的全过程。 模型文档的功能如下&#xff1a; 为各个模型…

JNDI学习总结(一)——JNDI数据源的配置

一、数据源的由来 在Java开发中&#xff0c;使用JDBC操作数据库的四个步骤如下&#xff1a; ①加载数据库驱动程序(Class.forName("数据库驱动类");)②连接数据库(Connection con DriverManager.getConnection();)③操作数据库(PreparedStatement stat con.prepa…

JNDI学习总结(二)——Tomcat下使用C3P0配置JNDI数据源

一、C3P0下载 C3P0下载地址&#xff1a;http://sourceforge.net/projects/c3p0/files/?sourcenavbar 下载完成之后得到一个压缩包。 二、使用C3P0配置JNDI数据源 Tomcat6.x中配置JNDI数据源时默认使用的是Tomcat6.x自带的DBCP连接池&#xff0c;Tomcat6.x使用DBCP连接池配置JN…

java 消息机制 ActiveMQ入门实例

1.下载ActiveMQ 去官方网站下载&#xff1a; http://activemq.apache.org/我下载的时候是 ActiveMQ 5.8.0 Release版 2.运行ActiveMQ 解压缩apache-activemq-5.8.0-bin.zip&#xff0c;然后双击apache-activemq-5.5.1\bin\activemq.bat运行ActiveMQ程序。 启动ActiveMQ以后&…

JavaSE基础12笔记常见对象

12.01_常见对象(Scanner概述及其方法介绍) A.Scanner概述 B.Scanner构造方法原理 ​ Scanner(Inputstream source) ​ System下面有个字段 ​ public static final Inputstream in;标准输入流,对应键盘录入 C.一般方法 ​ hasNextxxx() 判断是否还有下一个输入项 ​ ne…

spring integeration主要概念

1目标和原则 SpringIntegration主要有如下两个目标&#xff1a; l提供一个简单的模型来实现复杂的企业集成解决方案 l为基于Spring的应用添加异步的、消息驱动的行为&#xff0c;让Spring用户可以直观的、增量的采用 SpringIntegration基于两个原则&#xff1a; l组件应该松耦合…

Spring Integration入门

为什么使用Spring Integration Spring Integration是Spring框架创建的又一个API&#xff0c;面向企业应用集成&#xff08;EAI&#xff09;。说到集成&#xff0c;并不缺“解决办法”&#xff1a;硬编码的Java客户端、其它ESB产品&#xff0c;还有消息队列等更加传统的应用集成…

dispatcherservlet详解

3.1、DispatcherServlet作用 DispatcherServlet是前端控制器设计模式的实现&#xff0c;提供Spring Web MVC的集中访问点&#xff0c;而且负责职责的分派&#xff0c;而且与Spring IoC容器无缝集成&#xff0c;从而可以获得Spring的所有好处。 具体请参考第二章的图2-1。 Dispa…

理解本真的REST架构风格

引子 在移动互联网、云计算迅猛发展的今天&#xff0c;作为一名Web开发者&#xff0c;如果您还没听说过“REST”这个buzzword&#xff0c;显然已经落伍了。夸张点说&#xff0c;甚至“出了门都不好意思跟别人打招呼”。尽管如此&#xff0c;对于REST这个泊来品的理解&#xff0…

JavaSE基础21笔记IO流

22.01_IO流(序列流)(了解) 1.什么是序列流 序列流可以把多个字节输入流整合成一个, 从序列流中读取数据时, 将从被整合的第一个流开始读, 读完一个之后继续读第二个, 以此类推. 2.使用方式 整合两个: SequenceInputStream(InputStream, InputStream) FileInputStream fis1 n…
最新文章