GVKun编程网logo

html – 为什么normalize-space(text())在按文本选择时会忽略内部节点?(html点击按钮出现文本框)

1

在这里,我们将给大家分享关于html–为什么normalize-space(text())在按文本选择时会忽略内部节点?的知识,让您更了解html点击按钮出现文本框的本质,同时也会涉及到如何更有效地0

在这里,我们将给大家分享关于html – 为什么normalize-space(text())在按文本选择时会忽略内部节点?的知识,让您更了解html点击按钮出现文本框的本质,同时也会涉及到如何更有效地01-CSS3-justify-content: space-around; justify-content: space-between;、AFN不支持 "text/html" 的数据的问题:unacceptable content-type: text/html、CSS 文本排版属性详解:text-overflow 和 white-space、CSS 文本溢出属性优化技巧:text-overflow 和 white-space的内容。

本文目录一览:

html – 为什么normalize-space(text())在按文本选择时会忽略内部节点?(html点击按钮出现文本框)

html – 为什么normalize-space(text())在按文本选择时会忽略内部节点?(html点击按钮出现文本框)

为什么在下面的例子中我可以使用// label [text()[normalize-space()=’some label’]]或// label [normalize-space(text())=’some label’]来选择标签文本并忽略span的内容?为什么?我真的想了解这个问题.在 http://www.w3.org/TR/xpath/#function-normalize-space中没有关于此功能的信息.这正是我想要的,但我也非常想知道为什么这个解决方案有效:)

BTW,哪种语法更好:// label [text()[normalize-space()=’some label’]] vs // label [normalize-space(text())=’some label’]为什么?

<label>
<span>some span</span>
  some label   
</label>

<label>
    other label
<span>other span</span>
</label>

我正在寻找你的答案:)

解决方法

这与normalize-space()无关,也与text()无关.

text()是child :: text()的缩写,并选择作为label元素的直接子节点的文本节点.除非您正在剥离空白文本节点,否则示例中的label元素有两个子文本节点,其中一个是空白,另一个包含由空格包围的“某个标签”.

BTW,which Syntax is better: //label[text()[normalize-space() = 'some label']] vs //label[normalize-space(text()) = 'some label'] and why?

他们做不同的事情;更好的是做你想做的事.

在XPath 1.0中,第一个表达式选择具有子文本节点的标签元素,该子节点标准化后的值等于“某个标签”.第二个选择标签元素,其第一个子文本节点在空白标准化之后等于“某个标签”.那是因为normalize-space()(就像所有期望字符串的函数一样),如果给它一个节点集,则获取节点集中第一个节点的字符串值.

在XPath 2.0中,子节点标准化后的值等于“某个标签”.第二个选择标签元素,如果它们具有子文本节点,在空格标准化后等于“某个标签”,但如果标签元素具有多个子文本节点则会引发错误.这是因为normalize-space()(就像所有期望字符串的函数一样),将其参数原子化,并在雾化序列的长度大于1时报告类型错误.

01-CSS3-justify-content: space-around; justify-content: space-between;

01-CSS3-justify-content: space-around; justify-content: space-between;

/* justify-content: space-around;
运用在父级元素上
第一个子元素距离左边的距离==最后一个子元素距离右边的距离
除第一个子元素和最后一个子元素外,第2个,第3个...一直到倒数第二个子元素,这些子元素距离左右两边的间距都是相等
巧记:around 是四周,说明四周是有间距的。
*/

 

/* justify-content: space-between;
运用在父级元素上
第一个子元素和最后一个子元素 分别靠在最左和最右
除第一个子元素和最后一个子元素外,第2个,第3个...一直到倒数第二个子元素,这些子元素距离左右两边的间距都是相等
*/

 

 

<style>
            *{
                padding: 0;
                margin: 0;
                
            }
            ul{ 
                list-style: none;
                width:100%;
                background: orchid;
            }
            ul{
                display: flex;
                justify-content: space-around;
            }
            ul>li{
                width: 180px;
                height: 100px;
                background: pink;
            }
     
        </style>
    </head>
    <body>
        <ul>
            <li>111</li>
            <li>222</li>
            <li>333</li>
        </ul>
    </body>
</html>

 

justify-content: space-between;如下

 

 

 

 

AFN不支持

AFN不支持 "text/html" 的数据的问题:unacceptable content-type: text/html

使用AFN若遇到这个错误信息

Request failed: unacceptable content-type: text/html

bug原因:

这不是AFNetworking的问题 这是做Server那边的人沒把head内的 meta的content格式指定好

解决方法: 本文介绍两种方法, 第一种方法较好, 第二种存在风险, 特此说明,请勿使用第二种!

###1.第一种方法:

在懒加载AFHTTPSessionManager 对象时, 告诉AFN,支持接受 text/xml 的数据,代码如下:

- (AFHTTPSessionManager *)mgr{
      if (_mgr == nil) {
            _mgr = [AFHTTPSessionManager manager];
            // 告诉AFN,支持接受 text/xml 的数据
            _mgr.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", nil];
       }
       return _mgr;
}

###2.第二种方法: (强烈不建议使用)

修改AFN框架, 找到框架的init方法:

- (instancetype)init {
        self = [super init];
        if (!self) {
            return nil;
        }
        self.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html", nil];
        return self;
}

在该方法中添加类型。

不建议使用的原因是:只是修改了这个程序的AFN框架, 当框架升级或者上传代码到仓库, 再下载的时候,还是要改AFN框架, 太麻烦!

找init的路径:Pods/AFNetworking/Serialization/AFURLResponseSerialization.m 下的init方法

CSS 文本排版属性详解:text-overflow 和 white-space

CSS 文本排版属性详解:text-overflow 和 white-space

CSS 文本排版属性详解:text-overflow 和 white-space

在网页设计中,文本排版是一个非常重要的环节,通过合理的排版可以使文本更易读、更美观。CSS 提供了一些属性来控制文本的显示方式,其中包括 text-overflow 和 white-space。本文将详细介绍这两个属性的用法和示例代码。

一、text-overflow 属性

text-overflow 属性用于控制当文本超出容器时的显示方式。常见的取值有以下几种:

立即学习“前端免费学习笔记(深入)”;

  1. clip:默认值,超出容器的部分将被裁剪。
  2. ellipsis:超出容器的部分将以省略号(...)显示。
  3. string:可以自定义显示的字符串。

下面是示例代码:

<style>
  .container {
    width: 200px;
    white-space: nowrap; /* 强制不换行 */
    overflow: hidden; /* 超出容器部分隐藏 */
    text-overflow: ellipsis; /* 超出部分以省略号显示 */
  }
</style>

<div>
  This is a long text that should be truncated with an ellipsis when it overflows.
</div>
登录后复制

在上面的代码中,我们使用了一个容器,并设置了宽度为 200px,文本内容为一个长句子。通过设置 white-space 属性为 nowrap,表示强制不换行,overflow 属性为 hidden,表示超出容器的部分隐藏。最重要的是 text-overflow 属性,我们将其设置为 ellipsis,表示超出部分以省略号显示。

二、white-space 属性

white-space 属性用于控制文本的空白符处理方式。常见的取值有以下几种:

  1. normal:默认值,自动处理空白符,合并连续的空白符为一个空格,换行符和制表符也被当作空格处理。
  2. nowrap:强制不换行,合并连续的空白符为一个空格。
  3. pre:保留原始的空白符,保持文本的空白符格式。
  4. pre-wrap:保留原始的空白符,允许换行,文本将按照原始格式显示。
  5. pre-line:自动处理空白符,但保留换行符,允许换行,文本将按照原始格式显示。

下面是示例代码:

<style>
  .container {
    white-space: pre-wrap; /* 保留原始的空白符,允许换行 */
  }
</style>

<div>
  This is a long text that should wrap when it reaches the container''s width.
</div>
登录后复制

在上面的代码中,我们使用了一个容器,并设置了 white-space 属性为 pre-wrap,这样文本将保留原始的空白符,允许换行。

通过使用 text-overflow 和 white-space 这两个属性,我们可以更加灵活地控制文本的排版,使其更美观、更易读。在实际的网页设计中,我们可以根据需要选择合适的取值,并根据示例代码进行调试。

总结:

text-overflow 和 white-space 是 CSS 中用于控制文本排版的属性。text-overflow 用于控制当文本超出容器时的显示方式,常见的取值有 clip、ellipsis 和 string;white-space 用于控制文本的空白符处理方式,常见的取值有 normal、nowrap、pre、pre-wrap 和 pre-line。通过合理应用这两个属性,我们可以达到更好的文本排版效果。

以上就是CSS 文本排版属性详解:text-overflow 和 white-space的详细内容,更多请关注php中文网其它相关文章!

CSS 文本溢出属性优化技巧:text-overflow 和 white-space

CSS 文本溢出属性优化技巧:text-overflow 和 white-space

CSS 文本溢出属性优化技巧:text-overflow 和 white-space

CSS 是前端开发中最常用的样式语言之一,而文本溢出问题是我们经常会遇到的一个挑战。当文本内容超过所给定的容器尺寸时,就会出现文本溢出的情况。为了解决这个问题,CSS 提供了一些属性和技巧,其中包括 text-overflow 和 white-space。本文将介绍这两个属性的使用方法,并提供具体的代码示例。

一、text-overflow 属性

text-overflow 属性用于定义文本溢出时的处理方式。它有以下几个可选值:

立即学习“前端免费学习笔记(深入)”;

  1. clip:直接裁剪文本,不显示溢出部分。
  2. ellipsis:在溢出部分显示省略号。
  3. custom:用户自定义溢出部分的展示方式。

下面是一个简单的示例,演示了 text-overflow: ellipsis 的效果:

.container {
  width: 200px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
登录后复制
登录后复制
<div>
  This is a very long text that will be truncated.
</div>
登录后复制

上述代码中,通过将容器的宽度设置为 200px,同时设置 white-space 为 nowrap 和 overflow 为 hidden,使得文本超出容器宽度时隐藏溢出部分,并在末尾显示省略号。

二、white-space 属性

white-space 属性用于控制文本的换行和空白符的处理方式。常用的取值有以下几个:

  1. normal:默认值,文本自动换行,连续的空白符会被合并成一个空格。
  2. nowrap:强制文本不换行,不考虑容器宽度,连续的空白符会被合并成一个空格。
  3. pre:保留源代码中的换行和空白符,不自动换行。
  4. pre-wrap:保留源代码中的换行和空白符,但允许文本自动换行。
  5. pre-line:合并连续的空白符,但保留源代码中的换行符,允许文本自动换行。

下面是一个示例,展示了 white-space: nowrap 的效果:

.container {
  width: 200px;
  white-space: nowrap;
}
登录后复制
<div>
  This is a very long text that will not wrap.
</div>
登录后复制

在上述代码中,设置 white-space 为 nowrap,使得文本不自动换行。即使文本内容超出容器宽度,也不会换行。

三、综合应用示例

下面是一个综合应用 text-overflow 和 white-space 的示例:

.container {
  width: 200px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
登录后复制
登录后复制
<div>
  This is a very long text that will be truncated with ellipsis.
</div>
登录后复制

在上述代码中,通过设置 white-space 为 nowrap,使得文本不自动换行。通过设置 overflow 为 hidden 和 text-overflow 为 ellipsis,超出容器宽度的文本部分将被隐藏,并在末尾显示省略号。

在实际开发中,可以根据具体需求进行调整和扩展,例如自定义溢出部分的展示方式,改变省略号样式等。

综上所述,text-overflow 和 white-space 是解决文本溢出问题的常用属性和技巧。通过灵活运用它们,我们可以实现更好的文本展示效果,提升用户体验。

(注:以上示例中的样式代码仅为演示效果,实际项目中请根据具体需求调整样式)

以上就是CSS 文本溢出属性优化技巧:text-overflow 和 white-space的详细内容,更多请关注php中文网其它相关文章!

关于html – 为什么normalize-space(text())在按文本选择时会忽略内部节点?html点击按钮出现文本框的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于01-CSS3-justify-content: space-around; justify-content: space-between;、AFN不支持 "text/html" 的数据的问题:unacceptable content-type: text/html、CSS 文本排版属性详解:text-overflow 和 white-space、CSS 文本溢出属性优化技巧:text-overflow 和 white-space的相关信息,请在本站寻找。

本文标签: