设置字符/字母一半样式的方法 使用CSS或JavaScript设置字符部分的样式 将CSS应用于50%的字符
-
2 评论不用于展开讨论; 这次对话 移动到聊天 . – 用户3956566 评论 2018年5月25日17:36 -
17 他们之所以问“为什么”,是因为他们想知道为什么您要使用CSS而不使用SVG或图像编辑器。 与关于其徽标的商业决策无关。 根据你对他们标志的链接,你为什么不裁剪X呢? – 用户9993 评论 2018年10月27日16:57 -
6 在将这些方法应用于文本之前,请考虑可访问性。 下面提到的方法非常令人沮丧,因为它们不能提高视力差、学习障碍、失语症、诵读困难或成人识字率低的人的易读性和可读性。 有一些指南需要遵循,甚至谷歌也宣布将根据网站遵守WCAG规则的情况对其进行排名。 用斧子之类的工具很容易测试。 如果改为使用image/svg,则两者都需要一个文本替代品来传递信息。 – 纳西娅·马克里吉安尼 评论 2021年3月2日8:36
20个答案
现在在GitHub上作为插件!
演示 | 下载Zip | Half-Style.com网站 (重定向至GitHub)
纯CSS 对于单个字符 用于跨文本或多个字符自动化的JavaScript 为盲人或盲人的屏幕阅读器保留文本辅助功能 受损
第1部分:基本解决方案
//自动模式的jQuery jQuery(函数($){ var文本,字符,$el,i,输出; //遍历所有类事件 $('.textToHalfStyle').each(函数(idx,el){ $el=$(el); text=$el.text(); chars=text.split(''); //设置屏幕阅读器文本 $el.html('<span style=“position:absolute!important;clip:rect(1px 1px 1 px 1像素);clip:rect(1像素,1像素,1px,1像素));“>'+text+'</span>'); //重置附加输出 输出=“”; //遍历文本中的所有字符 对于(i=0;i<字符长度;i++){ //为每个字符创建一个样式化元素并附加到容器 output+='<span aria hidden=“true”class=“halfStyle”数据内容=“'+chars[i]+'”>'+chars[i]+'</span>'; } //只写入DOM一次 $el.append(输出); }); });
.半样式{ 位置:相对; 显示:嵌入式块; 字体大小:80px;/* 或者任何字体大小都可以*/ 颜色:黑色;/* 或透明,任何颜色*/ 溢出:隐藏; 空白:pre;/* 防止空间倒塌*/ } .helf样式:之前{ 显示:块; z指数:1; 位置:绝对; 顶部:0; 左:0; 宽度:50%; 内容:attr(数据内容);/* 伪元素的动态内容*/ 溢出:隐藏; 颜色:#f00; }
<script src=“ https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js “></script> <p>单个字符:</p> <span class=“halfStyle”data-content=“X”>X</span> Y</span> <span class=“halfStyle”data-content=“Z”>Z</span> <span class=“halfStyle”数据内容=“A”>A</span> <小时/> <p>自动化:</p> 请选择半样式</ span>
第2部分:高级解决方案-独立的左右部分
jQuery(函数($){ var文本,字符,$el,i,输出; //遍历所有类事件 $('.textToHalfStyle').each(函数(idx,el){ $el=$(el); text=$el.text(); chars=text.split(''); //设置屏幕阅读器文本 $el.html('<span style=“position:absolute!important;clip:rect(1px 1px 1 px 1像素);clip:rect(1像素,1像素,1px,1像素));“>'+text+'</span>'); //重置附加输出 输出=“”; //遍历文本中的所有字符 对于(i=0;i<字符长度;i++){ //为每个字符创建一个样式元素并附加到容器 输出+='<span aria-hidden=“true”class=“halfStyle”data-content=“'+chars[i]+'”>'+chars[i]+'</span>'; } //只写入DOM一次 $el.append(输出); }); });
.半样式{ 位置:相对; 显示:嵌入式块; 字体大小:80px;/* 或者任何字体大小都可以*/ 颜色:透明;/* 隐藏基本角色*/ 溢出:隐藏; 空白:pre;/* 防止空间倒塌*/ } .halfStyle:在{/*创建左侧零件之前*/ 显示:块; z指数:1; 位置:绝对; 顶部:0; 宽度:50%; 内容:attr(数据内容);/* 伪元素的动态内容*/ 溢出:隐藏; 指针事件:无;/* 所以基本字符可以通过鼠标选择*/ 颜色:#f00;/* 用于演示目的*/ 文本阴影:2px-2px 0px#af0;/* 用于演示目的*/ } .halfStyle:在{/*创建正确的部分之后*/ 显示:块; 方向:rtl;/* 非常重要,将使宽度从右侧开始*/ 位置:绝对; z指数:2; 顶部:0; 左:50%; 宽度:50%; 内容:attr(数据内容);/* 伪元素的动态内容*/ 溢出:隐藏; 指针事件:无;/* 所以基本字符可以通过鼠标选择*/ 颜色:#000;/* 用于演示目的*/ 文本阴影:2px 2px 0px#0af;/* 用于演示目的*/ }
<script src=“ https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js “></script> <p>单个字符:</p> <span class=“halfStyle”data-content=“X”>X</span> Y</span> <span class=“halfStyle”data-content=“Z”>Z</span> <span class=“halfStyle”数据内容=“A”>A</span> <小时/> <p>自动化:</p> 请选择半样式</ span>
第3部分:混合匹配和改进
-水平半部分
无文本阴影: 每个半部分单独使用文本阴影的可能性:
//自动模式的jQuery jQuery(函数($){ var文本,字符,$el,i,输出; //遍历所有类事件 $('.textToHalfStyle').each(函数(idx,el){ $el=$(el); text=$el.text(); chars=text.split(''); //设置屏幕阅读器文本 $el.html('<span style=“position:absolute!important;clip:rect(1px 1px 1 px 1像素);clip:rect(1像素,1像素,1px,1像素));“>'+text+'</span>'); //重置附加输出 输出=“”; //遍历文本中的所有字符 对于(i=0;i<字符长度;i++){ //为每个字符创建一个样式化元素并附加到容器 输出+='<span aria-hidden=“true”class=“halfStyle”data-content=“'+chars[i]+'”>'+chars[i]+'</span>'; } //只写入DOM一次 $el.append(输出); }); });
.半样式{ 位置:相对; 显示:嵌入式块; 字体大小:80px;/* 或者任何字体大小都可以*/ 颜色:透明;/* 隐藏基本角色*/ 溢出:隐藏; 空白:pre;/* 防止空间倒塌*/ } .halfStyle:在{/*创建顶部之前*/ 显示:块; z指数:2; 位置:绝对; 顶部:0; 高度:50%; 内容:attr(数据内容);/* 伪元素的动态内容*/ 溢出:隐藏; 指针事件:无;/* 所以基本字符可以通过鼠标选择*/ 颜色:#f00;/* 用于演示目的*/ 文本阴影:2px-2px 0px#af0;/* 用于演示目的*/ } .halfStyle:在{/*创建底部零件之后*/ 显示:块; 位置:绝对; z指数:1; 顶部:0; 高度:100%; 内容:attr(数据内容);/* 伪元素的动态内容*/ 溢出:隐藏; 指针事件:无;/* 所以基本字符可以通过鼠标选择*/ 颜色:#000;/* 用于演示目的*/ 文本阴影:2px 2px 0px#0af;/* 用于演示目的*/ }
<script src=“ https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js “></script> <p>单个字符:</p> <span class=“halfStyle”data-content=“X”>X</span> Y</span> <span class=“halfStyle”data-content=“Z”>Z</span> <span class=“halfStyle”data-content=“A”>A</span> <小时/> <p>自动化:</p> 请选择半样式</ span>
-垂直1/3部分
无文本阴影: 每个1/3部分单独使用文本阴影的可能性:
//自动模式的jQuery jQuery(函数($){ var文本,字符,$el,i,输出; //遍历所有类事件 $('.textToHalfStyle').each(函数(idx,el){ $el=$(el); text=$el.text(); chars=文本拆分(''); //设置屏幕阅读器文本 $el.html('<span style=“position:absolute!important;clip:rect(1px 1px 1 px 1像素);clip:rect(1像素,1像素,1px,1像素));“>'+text+'</span>'); //重置附加输出 输出=“”; //遍历文本中的所有字符 对于(i=0;i<字符长度;i++){ //为每个字符创建一个样式化元素并附加到容器 输出+='<span aria-hidden=“true”class=“halfStyle”data-content=“'+chars[i]+'”>'+chars[i]+'</span>'; } //只写入DOM一次 $el.append(输出); }); });
.halfStyle{/*基本字符和右侧的1/3*/ 位置:相对; 显示:嵌入式块; 字体大小:80px;/* 或者任何字体大小都可以*/ 颜色:透明;/* 隐藏基本角色*/ 溢出:隐藏; 空白:pre;/* 防止空间倒塌*/ 颜色:#f0f;/* 用于演示目的*/ 文本阴影:2px 2px 0px#0af;/* 用于演示目的*/ } .halfStyle:在{/*创建左侧1/3之前*/ 显示:块; z指数:2; 位置:绝对; 顶部:0; 宽度:33.33%; 内容:attr(数据内容);/* 伪元素的动态内容*/ 溢出:隐藏; 指针事件:无;/* 所以基本字符可以通过鼠标选择*/ 颜色:#f00;/* 用于演示目的*/ 文本阴影:2px-2px 0px#af0;/* 用于演示目的*/ } .halfStyle:在{/*之后创建中间的1/3*/ 显示:块; z指数:1; 位置:绝对; 顶部:0; 宽度:66.66%; 内容:attr(数据内容);/* 伪元素的动态内容*/ 溢出:隐藏; 指针事件:无;/* 所以基本字符可以通过鼠标选择*/ 颜色:#000;/* 用于演示目的*/ 文本阴影:2px 2px 0px#af0;/* 用于演示目的*/ }
<script src=“ https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js “></script> <p>单个字符:</p> <span class=“halfStyle”data-content=“X”>X</span> Y</span> <span class=“halfStyle”data-content=“Z”>Z</span> <span class=“halfStyle”data-content=“A”>A</span> <小时/> <p>自动化:</p> 请选择半样式</ span>
-水平1/3部分
无文本阴影: 每个1/3部分单独使用文本阴影的可能性:
//自动模式的jQuery jQuery(函数($){ var文本,字符,$el,i,输出; //遍历所有类事件 $('.textToHalfStyle').each(函数(idx,el){ $el=$(el); text=$el.text(); chars=text.split(''); //设置屏幕阅读器文本 $el.html('<span style=“position:absolute!important;clip:rect(1px 1px 1 px 1像素);clip:rect(1像素,1像素,1px,1像素));“>'+text+'</span>'); //重置附加输出 输出=“”; //遍历文本中的所有字符 对于(i=0;i<字符长度;i++){ //为每个字符创建一个样式化元素并附加到容器 输出+='<span aria-hidden=“true”class=“halfStyle”data-content=“'+chars[i]+'”>'+chars[i]+'</span>'; } //只写入DOM一次 $el.append(输出); }); });
.halfStyle{/*基本字符和底部1/3*/ 位置:相对; 显示:嵌入式块; 字体大小:80px;/* 或者任何字体大小都可以*/ 颜色:透明; 溢出:隐藏; 空白:pre;/* 防止空间倒塌*/ 颜色:#f0f; 文本阴影:2px 2px 0px#0af;/* 用于演示目的*/ } .halfStyle:在{/*创建前1/3*/ 显示:块; z指数:2; 位置:绝对; 顶部:0; 身高:33.33%; 内容:attr(数据内容);/* 伪元素的动态内容*/ 溢出:隐藏; 指针事件:无;/* 所以基本字符可以通过鼠标选择*/ 颜色:#f00;/* 用于演示目的*/ 文本阴影:2px-2px 0px#fa0;/* 用于演示目的*/ } .halfStyle:在{/*之后创建中间的1/3*/ 显示:块; 位置:绝对; z指数:1; 顶部:0; 身高:66.66%; 内容:attr(数据内容);/* 伪元素的动态内容*/ 溢出:隐藏; 指针事件:无;/* 所以基本字符可以通过鼠标选择*/ 颜色:#000;/* 用于演示目的*/ 文本阴影:2px 2px 0px#af0;/* 用于演示目的*/ }
<script src=“ https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js “></script> <p>单个字符:</p> <span class=“halfStyle”data-content=“X”>X</span> Y</span> <span class=“halfStyle”data-content=“Z”>Z</span> <span class=“halfStyle”data-content=“A”>A</span> <小时/> <p>自动化:</p> <span class=“textToHalfStyle”>请选择一半样式</ span>
-中场风格改进@KevinGranger
//自动模式的jQuery jQuery(函数($){ var文本,字符,$el,i,输出; //遍历所有类事件 $('.textToHalfStyle').each(函数(idx,el){ $el=$(el); text=$el.text(); chars=text.split(''); //设置屏幕阅读器文本 $el.html('<span style=“position:absolute!important;clip:rect(1px 1px 1 px 1像素);clip:rect(1像素,1像素,1px,1像素));“>'+text+'</span>'); //重置附加输出 输出=“”; //遍历文本中的所有字符 对于(i=0;i<字符长度;i++){ //为每个字符创建一个样式元素并附加到容器 输出+='<span aria-hidden=“true”class=“halfStyle”data-content=“'+chars[i]+'”>'+chars[i]+'</span>'; } //只写入DOM一次 $el.append(输出); }); });
车身{ 背景色:黑色; } .text到半样式{ 显示:块; 边距:200px 0 0; 文本对齐:居中; } .半样式{ font-family:'Libre Baskerville',衬线; 位置:相对; 显示:嵌入式块; 宽度:1; 字体大小:70px; 颜色:黑色; 溢出:隐藏; 空白:前置; 文本阴影:1px 2px 0白色; } .helf样式:之前{ 显示:块; z指数:1; 位置:绝对; 顶部:0; 宽度:50%; 内容:attr(数据内容);/* 伪元素的动态内容*/ 溢出:隐藏; 颜色:白色; }
<script src=“ https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js “></script> <p>单个字符:</p> <span class=“halfStyle”data-content=“X”>X</span> Y</span> <span class=“halfStyle”data-content=“Z”>Z</span> <span class=“halfStyle”data-content=“A”>A</span> <小时/> <p>自动化:</p> 请选择半样式</ span>
-HalfStyle的PeelingStyle改进 @萨姆特雷梅因
//自动模式的jQuery jQuery(函数($){ var文本,字符,$el,i,输出; //遍历所有类事件 $('.textToHalfStyle').each(函数(idx,el){ $el=$(el); text=$el.text(); chars=text.split(''); //设置屏幕阅读器文本 $el.html('<span style=“position:absolute!important;clip:rect(1px 1px 1 px 1像素);clip:rect(1像素,1像素,1px,1像素));“>'+text+'</span>'); //重置附加输出 输出=“”; //遍历文本中的所有字符 对于(i=0;i<字符长度;i++){ //为每个字符创建一个样式化元素并附加到容器 输出+='<span aria-hidden=“true”class=“halfStyle”data-content=“'+chars[i]+'”>'+chars[i]+'</span>'; } //只写入DOM一次 $el.append(输出); }); });
.半样式{ 位置:相对; 显示:嵌入式块; 字体大小:68px; 颜色:rgba(0、0、0和0.8); 溢出:隐藏; 空白:前置; 变换:旋转(4度); 文本阴影:2px 1px 3px rgba(0、0、0和0.3); } .halfStyle:在{/*创建左侧零件之前*/ 显示:块; z指数:1; 位置:绝对; 顶部:-0.5px; 左:-3px; 宽度:100%; 内容:attr(数据内容); 溢出:隐藏; 指针-事件:无; 颜色:#FFF; 变换:旋转(-4度); 文本阴影:0px 0px 1px#000; }
<script src=“ https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js “></script> <p>单个字符:</p> <span class=“halfStyle”数据内容=“X”>X</span> Y</span> <span class=“halfStyle”数据内容=“Z”>Z</span> <span class=“halfStyle”data-content=“A”>A</span> <小时/> <p>自动化:</p> 请选择半样式</ span>
第4部分:准备生产
jQuery(函数($){ var半样式文本,半样式字符,$halfstyle_el,半样式i,半样式输出,半样式样式; //遍历所有类事件 $('.textToHalfStyle').each(函数(idx,halfstyle_el){ $halfstyle_el=$(半样式_el); halfstyle_style=$halfstyle_el.data('halfstyle')||'hs-base'; halfstyle_text=$halfstyle_el.text(); halfstyle_chars=halfstyle_text.split(''); //设置屏幕阅读器文本 $halfstyle_el.html('<span style=“position:absolute!important;clip:rect(1px 1px 1 px 1像素);clip:rect(1像素,1像素,1px,1像素));“>'+halfstyle_text+'</span>'); //重置输出以进行追加 halfstyle_output=“”; //遍历文本中的所有字符 对于(halfstyle_i=0;halfstyle_ i<halfstyle_chars.length;halftyle_i++){ //为每个字符创建一个样式化元素并附加到容器 halfstyle_output+='<span aria-hidden=“true”class=“halfstyle'+halfstyle_style+'”data-content=“'+halstyle_chars[halfstyleui]+'”>'+hafstyle_chars[halftyle_i]+'</span>'; } //只写入DOM一次 $halfstyle_el.append(半样式_输出); }); });
/*启动半样式hs-base*/ .hlf样式.hsbase{ 位置:相对; 显示:嵌入式块; 字体大小:80px;/* 或者任何字体大小都可以*/ 溢出:隐藏; 空白:pre;/* 防止空间坍塌*/ 颜色:#000;/* 用于演示目的*/ } .hlf样式.hs底部:之前{ 显示:块; z指数:1; 位置:绝对; 顶部:0; 宽度:50%; 内容:attr(数据内容);/* 伪元素的动态内容*/ 指针事件:无;/* 所以基本字符可以通过鼠标选择*/ 溢出:隐藏; 颜色:#f00;/* 用于演示目的*/ } /*端半式hs基*/ /*开始半场式hs-horizontal第三*/ .hlfStyle.hs-horizontal-第三个{/*基本字符和底部的1/3*/ 位置:相对; 显示:嵌入式块; 字体大小:80px;/* 或者任何字体大小都可以*/ 颜色:透明; 溢出:隐藏; 空白:pre;/* 防止空间倒塌*/ 颜色:#f0f; 文本阴影:2px 2px 0px#0af;/* 用于演示目的*/ } .havlStyle.hs-horizontal-thrend:在{/*创建前1/3*/ 显示:块; z指数:2; 位置:绝对; 顶部:0; 身高:33.33%; 内容:attr(数据内容);/* 伪元素的动态内容*/ 溢出:隐藏; 指针事件:无;/* 所以基本字符可以通过鼠标选择*/ 颜色:#f00;/* 用于演示目的*/ 文本阴影:2px-2px 0px#fa0;/* 用于演示目的*/ } .halfStyle.hs-horizontal-thrend:在{/*之后创建中间1/3*/ 显示:块; 位置:绝对; z指数:1; 顶部:0; 身高:66.66%; 内容:attr(数据内容);/* 伪元素的动态内容*/ 溢出:隐藏; 指针事件:无;/* 所以基本字符可以通过鼠标选择*/ 颜色:#000;/* 用于演示目的*/ 文本阴影:2px 2px 0px#af0;/* 用于演示目的*/ } /*结束半场风格hs-horizontal-第三*/ /*由用户SamTremaine在Stackoverflow.com上启动half-style hs-PeelingStyle*/ .hlf样式.hs-触摸样式{ 位置:相对; 显示:嵌入式块; 字体大小:68px; 颜色:rgba(0、0、0和0.8); 溢出:隐藏; 空白:前置; 变换:旋转(4度); 文本阴影:2px 1px 3px rgba(0、0、0和0.3); } .halfStyle.hs-PeelingStyle:在{/*创建左侧零件之前*/ 显示:块; z指数:1; 位置:绝对; 顶部:-0.5px; 左:-3px; 宽度:100%; 内容:attr(数据内容); 溢出:隐藏; 指针-事件:无; 颜色:#FFF; 变换:旋转(-4度); 文本阴影:0px 0px 1px#000; } /*结束半样式hs-PeelingStyle*/ /*StackOverflow.com上的用户KevinGranger启动半身风格hs-KevinGranger*/ .text到半样式.hs-KevinGranger{ 显示:块; 边距:200px 0 0 0; 文本对齐:居中; } .hlf样式.hs-KevinGranger{ 字体家族:“Libre Baskerville”,衬线字体; 位置:相对; 显示:嵌入式块; 宽度:1; 字体大小:70px; 颜色:黑色; 溢出:隐藏; 空白:前置; 文本阴影:1px 2px 0白色; } .hlfStyle.hs-KevinGranger:之前{ 显示:块; z指数:1; 位置:绝对; 顶部:0; 宽度:50%; 内容:attr(数据内容);/* 伪元素的动态内容*/ 溢出:隐藏; 颜色:白色; } /*末端半身式hs-凯文·格兰杰
<script src=“ https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js “></script> <p> 请选择半样式</ span> </p> <p> 请选择半样式</ span> </p> <p> 请选择Half-style</ span> </p> <p style=“background-color:#000;”> 请选择半样式</ span> </p>
在上查看项目 github -查看项目 网站 . (这样您可以看到所有拆分样式)
用法
<script src=“ http://code.jquery.com/jquery-latest.min.js “></script>
<link rel=“stylesheet”type=“text/css”href=“css/splitchar.css”> <script type=“text/javascript”src=“js/splicchar.js”></script>
标记
splitchar</h1>
$(“.splitchar”).splitchar();
自定义
.horizontal{/*基本CSS-例如font-size*/} .horizontal:位于左半部的{/*CSS之前*/} .horizontal:右半部的{/*CSS后面*/}
-
-
-
4 -
20 不要依赖jquery-latest.min.js,如果jquery更新了,并且插件不能与新的插件一起使用,它会让你的网站在没有警告的情况下崩溃。 相反,请使用特定版本,并在更新时检查兼容性。 – 尼尔斯·博姆 评论 2014年5月13日13:39 -
三 您可能想编辑您的答案,不建议使用jquery-latest.js。 正如@NielsBom所提到的,在过去,当你的网站被更新时,它可能会破坏你的网站。 自2014年7月以来,它不会这样做,但这是因为 它在版本1.11.1中被锁定 并且永远不会再更新。 – 无用代码 评论 2016年2月24日16:51
小时1{ 显示:嵌入式块; 边距:0;/* 用于演示片段*/ 线高:1em;/* 用于演示片段*/ 字体系列:helvetica,arial,sans-serif; font-weight:粗体; 字体大小:300px; 背景:线性渐变(向右,#7db9e8 50%,#1e5799 50%); 背景剪辑:文本; -webkit-text-fill-color:透明; }
<h1>X(X)</h1>
-
55 WebKit有一段渲染错误的历史,这些错误几乎都是IE6/IE7级别的怪异错误(你甚至可以说Safari和Chrome是现代网络的IE6),并且行为方式没有特定原因偏离了标准。 自从第9版以来,IE已经变得更好了,所以虽然古老的版本应该已经消亡了,但我不认为有任何理由憎恨它的最新版本。 我当然不明白为什么人们支持WebKit/Blink单一文化的想法(这里的评论可能是开玩笑的,但我听说有人真的相信它)。 – 螺栓时钟 评论 2014年5月13日5:38 -
4 -
三 是的,如果blink/webkit死了,现代IE的+FF渲染引擎幸存下来,我会比其他情况更高兴。 这并不是说其余的铬元素不好,只是它的渲染效果是当今最差的。 – 伊蒙·内波恩 评论 2014年5月13日9:44 -
@DA:当然。 然而,Blink仍然非常类似于webkit,并且可疑的行为并不都是post-fork,所以我不确定是否值得非常强烈地进行区分。 然而,狩猎旅行似乎没有那么麻烦。 – 伊蒙·内波恩 评论 2014年5月14日20:07 -
JSFiddle演示
两个比一个好</ div(分频)>
.分色>span{ 空白:前置行; 位置:相对; 颜色:#409FBF; } .split-color>span:之前{ 内容:attr(数据内容); 指针事件:无;/* 防止事件以伪元素为目标*/ 位置:绝对; 溢出:隐藏; 颜色:#264A73; 宽度:50%; z指数:1; }
//将每个字母包装在span标记中并返回HTML字符串 //可用于替换原始文本的 函数wrapString(str){ var输出=[]; str.split(“”).forEach(函数(字母){ var wrapper=document.createElement('span'); wrapper.dataset.content=wrapper.innerHTML=字母; output.push(wrapper.outerHTML); }); 返回output.join(“”); } //用分色文本替换原始文本 window.onload=函数(){ var el=document.querySelector('.split-color'), txt=el.innerHTML; el.innerHTML=包装字符串(txt); }
.example-one(示例){ 字体大小:100px; @包括textGlitch(“示例一”,17,白色,黑色,红色,蓝色,450,115); }
$(“div”).each(function(){ var CHARS=$(this).text().split(''); $(this).html(“”); $.each(CHARS,函数(索引,字符){ var canvas=$(“<canvas/>”) .css(“宽度”,“40px”) .css(“高度”,“40px”) .get(0); $(“div”).append(画布); var ctx=canvas.getContext(“2d”); var gradient=ctx.createLinearGradient(0,0,130,0); gradient.addColorStop(“0”,“blue”); gradient.addColorStop(“0.5”,“蓝色”); gradient.addColorStop(“0.51”,“red”); gradient.addColorStop(“1.0”,“red”); ctx.font='130pt Calibri'; ctx.fillStyle=渐变; ctx.fillText(char,10130); }); });
<script src=“ https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js “></script> <div>示例文本</div>
$(函数(){ $('span').width($('span').width()/2); $('span:nth-child(2)').css('text-indent',-$('span).width()); });
车身{ 字体系列:arial; } 跨度{ 显示:嵌入式块; 溢出:隐藏; } 跨度:第n个子(2){ 颜色:红色; }
<script src=“ https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js “></script> <span>X轴</span>
-
2 -
1 这与epascarello在jsfiddle.net/9WWsd上的示例非常相似。 正如我告诉他的那样,你的例子是朝着正确的方向迈出的一步,但如果在更大范围内使用,那将是一场噩梦。 评论 2014年5月9日16:30 -
-
-
var textToHalfStyle=$('.textToHalfStyle').text(); var textToHalfStyleChars=textToHalfStyle.split(''); $('.textToHalfStyle').html(''); $.each(textToHalfStyleChars,函数(i,v){ $('.textToHalfStyle').append('<span class=“halfStyle”data-content=“'+v+'”>'+v+'</span>'); });
车身{ 背景色:黑色; } .text到半样式{ 显示:块; 边距:200px 0 0; 文本对齐:居中; } .半样式{ font-family:'Libre Baskerville',衬线; 位置:相对; 显示:嵌入式块; 宽度:1; 字体大小:70px; 颜色:黑色; 溢出:隐藏; 空白:前置; 文本阴影:1px 2px 0白色; } .helf样式:之前{ 显示:块; z指数:1; 位置:绝对; 顶部:0; 宽度:50%; 内容:attr(数据内容);/* 伪元素的动态内容*/ 溢出:隐藏; 颜色:白色; }
<script src=“ https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js “></script> 杰基尔博士和M.Hide</span>
跨度{ 位置:相对; 颜色:rgba(50,5020,0.5); } span:之前{ 内容:attr(data-char); 位置:绝对; 宽度:50%; 溢出:隐藏; 颜色:rgb(50,50200); }
<span data-char=“X”>X</span>
$(函数(){ var$hc=$('.shalf-color'); var str=$hc.text(); $hc.html(“”); var i=0; var字符; var dupText; while(i<字符串长度){ chars=字符串[i]; if(chars==“”)chars=“”; dupText=“<span>”+字符+“</span>”; var firstHalf=$(dupText); var secondHalf=$(dupText); $hc.append(上半场) $hc.append(后半部分) var width=firstHalf.width()/2; 前半部宽度(宽度); secondHalf.css('text-indent',-width); i++; } });
.半色范围{ 字体大小:2em; 显示:嵌入式块; 溢出:隐藏; } .半色范围:第n个子(偶数){ 颜色:红色; }
<script src=“ https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js “></script> 这是一个句子
跨度{ 字体大小:100px; 背景:线性渐变(向右,黑色,黑色50%,灰色50%,灰色); 背景剪辑:文本; -webkit-text-fill-color:透明; }
.holf样式{ 位置:相对; 显示:嵌入式块; 字体大小:68px;/* 或者任何字体大小都可以*/ 颜色:rgba(0,0,0.8);/* 或透明,任何颜色*/ 溢出:隐藏; 空白:pre;/* 防止空间倒塌*/ 变换:旋转(4度); -webkit转换:旋转(4度); 文本阴影:2px 1px 3px rgba(0,0,0.0.3); } .helf样式:之前{ 显示:块; z指数:1; 位置:绝对; 顶部:-0.5px; 左:-3px; 宽度:100%; 内容:attr(数据内容);/* 伪元素的动态内容*/ 溢出:隐藏; 颜色:白色; 变换:旋转(-4度); -webkit-transform:旋转(-4度); 文本阴影:0 0 1px黑色; }
p.char(p.char){ 位置:相对; 显示:嵌入式块; 字体大小:60px; 颜色:红色; } p.char:之前{ 位置:绝对; 内容:attr(char); 宽度:50%; 溢出:隐藏; 颜色:黑色; }
<p class=“char”char=“S”>S</p> <p class=“char”char=“t”>t</p> <p class=“char”char=“a”>a</p> <p class=“char”char=“c”>c</p> <p class=“char”char=“k”>k</p> <p class=“char”char=“o”>o</p> <p class=“char”char=“v”>v</p> <p class=“char”char=“e”>e</p> <p class=“char”char=“r”>r</p> <p class=“char”char=“f”>f</p> <p class=“char”char=“l”>l</p> <p class=“char”char=“o”>o</p> <p class=“char”char=“w”>w</p>
我这样做的主要原因是为了测试自己,看看我是否能够完成角色的一半造型,同时为OP提供一个有意义的答案。 我知道这不是一个理想的或最具扩展性的解决方案,这里的人提出的解决方案对于“现实世界”场景来说要好得多。 我创建的CSS代码是基于我脑海中的第一个想法和我自己解决问题的方法。 我的解决方案只适用于对称字符,如X、A、O、M。**它不适用于非对称字符,例如B、C、F、K或小写字母。 **然而,这种方法使用不对称字符创建了非常有趣的“形状”。 尝试将X更改为K或小写字母,如 小时 或a 第页 在CSS中:)
<span class=“半角字母”></span>
.半字符{ 显示:嵌入式块; 字体:bold 350px/.8宋体; 位置:相对; &:之前,&:之后{ 内容:“X”// 在此处更改字符 显示:嵌入式块; 宽度:50%; 溢出:隐藏; 颜色:#7db9e8; } &:之后{ 位置:绝对; 顶部:0; 左:50%; 颜色:#1e5799; 变换:旋转Y(-180度); } }
一半,一半1{ 浮动:左; } 一半,一半1{ 字体系列:arial; 字体大小:300px; font-weight:粗体; 宽度:200px; 高度:300px; 位置:相对;/* 帮助将内容值保持在*/ 溢出:隐藏; 颜色:#000; } 半成品:之前,半成品1:之前{ 宽度:50%;/* 我们想展示多少*/ 溢出:隐藏;/* 隐藏超出我们维度的内容*/ 内容:'X';/* 半成品字符*/ 高度:100%; 位置:绝对; 颜色:#28507D; } /*对于水平切断*/ .hlfed1:之前{ 宽度:100%; 身高:55%; }
X</div> X</div>
var title=document.querySelector('h1'), text=title.innerHTML, svgTemplate=document.querySelector('svg'), charStyle=svgTemplate.querySelector('#text'); svgTemplate.style.display=“块”; var空间=0; 对于(var i=0;i<文本长度;i++){ var x=charStyle.cloneNode(); x.textContent=文本[i]; svgTemplate.appendChild(x); x.setAttribute('x',空格); 空格+=x.clientWidth||15; } title.innerHTML=''; title.appendChild(svgTemplate);
<svg style=“display:none;height:100px;width:100%”xmlns=“ 网址:http://www.w3.org/2000/svg “xmlns:svg=” 网址:http://www.w3.org/2000/svg “xmlns:xlink=” http://www.w3.org/1999/xlink “版本=”1.1“> <defs id=“FooDefs”> <linearGradient id=“MyGradient”x1=“0%”y1=“0%“x2=”100%“y2=”0%“> <停止偏移=“50%”stop-color=“blue”/> <停止偏移=“50%”stop-color=“red”/> </linear渐变> </defs> <text y=“50%”id=“text”style=“font-size:72px;填充:url(#MyGradient)”></text> </svg> <h1>这不是解决方案X</h1>
车身{ 文本对齐:居中; 边距:0; } 小时1{ 颜色:#111; 字体系列:arial; 位置:相对; font-family:'Oswald',sans-serif; 显示:嵌入式块; 字体大小:2.5em; } h1::之后{ 内容:attr(data-title-text); 颜色:#e5554e; 位置:绝对; 左:0; 顶部:0; 剪辑:矩形(0,1000px,30px,0); }
<h1 data-title-text=“Display text”>显示文本</h1>
<span>A类</span>
<span data-i=“0”style=“color:rgb(153,51,34);”>L</span> <span data-i=“1”style=“color:rgb(154,52,35);”>o</span> <span data-i=“2”style=“color:rgb(155,53,36);”>r</span> <span data-i=“3”style=“color:rgb(156,55,38);”>e</span> <span data-i=“4”style=“color:rgb(157,56,39);”>m</span>
但是!
<span data-i=“6”style=“color:rgb(81,165,39);overflow:hidden;height:11.2px;”>Lorem ipsum dolor sit amet,tincidunt ut laoreet dolore magna aliquam erat voluppat</ span> <span data-i=“7”style=“color:rgb(89,174,48);overflow:hidden;height:12.8px;”>Lorem ipsum dolor sit amet,tincidunt ut laoreet dolore magna aliquam erat voluppat</ span> <span data-i=“8”style=“color:rgb(97,183,58);overflow:hidden;height:14.4px;”>Lorem ipsum dolor sit amet,tincidunt ut laoreet dolore magna aliquam erat voluppat</ span> <span data-i=“9”style=“color:rgb(105,192,68);overflow:hidden;height:16px;”>Lorem ipsum dolor sit amet,tincidunt ut laoreet dolore magna aliquam erat voluppat</ span> <span data-i=“10”style=“color:rgb(113,201,78);overflow:hidden;height:17.6px;”>Lorem ipsum dolor sit amet,tincidunt ut laoreet dolore magna aliquam erat voluppat</ span> <span data-i=“11”style=“color:rgb(121,210,88);overflow:hidden;height:19.2px;”>Lorem ipsum dolor sit amet,tincidunt ut laoreet dolore magna aliquam erat voluppat</ span>
再一次,但是!
如果字体是单空格。 如果使用垂直布局。
div公司{ 字体大小:80px; font-weight:粗体; 颜色:透明; 填充:0; 边距:0; 背景:线性梯度(90度,rgb(34,67,143)0%50%,#409FBF 50%); 背景剪辑:文本; -webkit-background-clip:文本; } .一个{ font-family:“Nova Mono”; 背景重复:重复-x; 背景尺寸:45px; } .2个{ font-family:“吉迪恩·罗曼”; 写入方式:vertical-lr; 文本方向:垂直; 字母间距:-35px; 高度:500px; }
<!-- 获取字体--> <link rel=“preconnect”href=“ https://fonts.googleapis.com "> <link rel=“预连接”href=“ https://fonts.gstatic.com “交叉原点> <link href=“ https://fonts.googleapis.com/cs2?family=新星 +Mono&display=swap“rel=”stylesheet“> <link href=“ https://fonts.googleapis.com/css2?family=Gideon +Roman&display=swap“rel=”stylesheet“> 冬季X光 Minty(米蒂)
div公司{ 位置:相对; 顶部:2em; 高度:2em; 文本转换:全宽; } div:之前, div:之后{ 内容:attr(数据内容); 位置:绝对; 顶部:0; 右:0; 底部:0; 左:0; } div:之后{ 颜色:红色; /*单个字符的掩码。 通过重复此掩码,所有字符串都将被屏蔽*/ -webkit-mask-image:线性渐变(向右,透明0,透明.5em,白色.5em和白色1em); -webkit-mask-repeat:重复-x;/* 向右重复口罩*/ -webkit-mask大小:1em;/* 单个字符的相对宽度*/ /*非供应商掩码设置*/ 掩模图像:线性梯度(向右,透明0,透明.5em,白色.5em,白色1em); 掩码重复:重复-x; 口罩尺寸:1厘米; } /*演示目的*/ input[name=“fontSize”]:类型第一:选中~div{ 字体大小:1em; } input[name=“fontSize”]:类型第一+输入:选中~div{ 字体大小:2em; } input[name=“fontSize”]:类型第一+输入+输入:选中~div{ 字体大小:3em; }
字体大小: <input type=“radio”name=“fontSize”value=“1em”> <input type=“radio”name=“fontSize”value=“2em”选中> <input type=“radio”name=“fontSize”value=“3em”> <div data-content=“仅支持CSS的解决方案…”> <div data-content=“在Firefox上试试!”></div>
适用于所有浏览器的通用JavaScript解决方案
常数 dataElement=document.getElementById(“数据”), content=dataElement.textContent, zoom=函数(fontSize){ dataElement.style['font-size']=fontSize+'em'; }; while(dataElement.firstChild){ dataElement.firstChild.remove() } for(var i=0;i<内容长度;++i){ 常数 spanElem=document.createElement('span'), ch=含量[i]; spanElem.setAttribute('data-ch',ch); spanElem.appendChild(document.createTextNode(ch==''?'\u00A0':ch)); data.appendChild(spanElem); }
#数据{ 位置:相对; 顶部:2em; 高度:2em; 字体大小:2em; } #数据跨度{ 显示:嵌入式块; 位置:相对; 颜色:透明; } #数据范围:之前, #数据范围:之后{ 内容:attr(data-ch); 显示:嵌入式块; 位置:绝对; 顶部:0; 右:0; 底部:0; 左:0; 文本对齐:居中; 颜色:初始; } #数据范围:之后{ 颜色:红色; -webkit掩码图像:线性梯度(向右,透明0,透明50%,白色50%,白色100%); 蒙版图像:线性渐变(向右,透明0,透明50%,白色50%,白色100%); }
字体大小: <input type=“range”min=1 max=4 step=0.05 value=2 oninput=“zoom(this.value)”onchange=“zoom(this.value)”> 回退解决方案。。。 对于所有浏览器</div>