为了账号安全,请及时绑定邮箱和手机立即绑定

将唯一的类添加到部分 (PHP)

将唯一的类添加到部分 (PHP)

PHP
慕森卡 2023-09-22 17:34:55
我的网页设计已经设置了 CMS,但我遇到了一些问题。目前,节都使用相同的 css 标签 .SectionOuterAlt 或 .SectionOuter (如果有多个,则变为“Alt”。这同样适用于 .SectionInner。我搜索了“SectionOuter”并发现了这行代码。在我看来,它添加了“Alt”。问题是我需要每个部分都是唯一的,以便我可以添加 css。如果我可以保留“SectionOuter”和“SectionOuterAlt”,但为每个部分包含一个独特的 css 类,以便我可以对每个单独的部分进行独特的更改,那就太好了。<section class="SectionOuter<?php echo $alt; ?>"> <section class="SectionInner<?php echo $alt; ?>">有人可以帮忙吗?
查看完整描述

2 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

如果您希望每个类都有唯一的值,那么您可以执行以下操作:


<?php


for ($k = 1; $k <= 2; $k++)

    echo '<section class="SectionOuter SectionOuterAlt SectionOuterAlt-' . $k . '">';


for ($k = 1; $k <= 2; $k++)

    echo '<section class="SectionInner SectionInnerAlt SectionInnerAlt-' . $k . '">';


输出将是这样的:


<section class="SectionOuter SectionOuterAlt SectionOuterAlt-1">

<section class="SectionOuter SectionOuterAlt SectionOuterAlt-2">

<section class="SectionInner SectionInnerAlt SectionInnerAlt-1">

<section class="SectionInner SectionInnerAlt SectionInnerAlt-2">


查看完整回答
反对 回复 2023-09-22
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

另一个答案不起作用的原因是它正在应用可能不合适的类,并且可能需要替换其他类。

您需要做的是保持现有类不变,并添加一个可用于独特样式的新类。

在页面顶部,您可以添加一个全局变量,例如

<?php $SectionCount = 0; ?>

然后,在要添加唯一类的地方,可以执行以下操作:

<section class="SectionOuter<?php echo $alt; ?> UniqueClass-<?php echo $SectionCount++; ?>" >
<section class="SectionInner<?php echo $alt; ?> UniqueClass-<?php echo $SectionCount++; ?>" >

这将自动向每个部分添加一个新的、唯一的类,称为UniqueClass-nn在页面中是唯一的),而不影响现有的功能或样式。它也不限于每页仅 2 个数字或部分。

使其全球化

您可以通过多种方式使其全局化,具体取决于页面的设置方式,例如

  1. 在头代码中添加全局变量

  2. 在页面上使用唯一的类body来定位每个页面(例如.homepage .UniqueClass-1 {} .contactpage .UniqueClass-1 {} 等)

但是,如果没有有关如何设置您当前站点的更多信息(例如 CMS,或者可能存在哪些模板文件来添加代码),我们无法准确告诉您如何实现这一目标。

更新:

向所有页面的每个部分添加唯一的编号实际上并不可行 - 这是可能的,但与手动添加它们相比,它需要花费同样多(或更多)的精力(为了使其持久且一致,必须将其分配给每个部分)。

您可以:

  1. 使用页面主体和部分类的唯一类/id 的组合(如上所述)

  2. 根据页面的某些唯一标识符为每个部分生成一个新类

无论哪种情况,您都需要在每个页面上使用唯一的标识符。这取决于页面的设置方式,但如果您使用 CMS,则每个<body>元素可能会添加一个唯一的类。

1. 班级组合

例如,您的主页可能有类似的内容,<body class="homepage page-452">“关于”页面可能是:<body class="page-about page-818">等等。

在这种情况下,您可以使用这些类的组合来定位每个特定页面上的部分,例如

// target ONLY UniqueClass-1 on the page with the specified body class

.page-452 .UniqueClass-1 { /* CSS HERE FOR HOMEPAGE ONLY */ } 

.page-818 .UniqueClass-1 { /* CSS HERE FOR ABOUT PAGE ONLY */ } 

如果不了解有关您的 CMS 或生成的 HTML 的更多信息,则很难给出准确的答案,但这就是您可以做到的方法。


(自从我开始回答这个问题以来,我在您发表的评论中看到您的 CMS 没有独特的正文类,因此您需要使用下一个选项:)


2. 生成一个独特的类


或者,要为每个页面生成唯一的类,如果您的 CMS 生成了 slug,则可以使用 slug,或者如果页面标题始终是唯一的,您可以通过将其添加到声明 $SectionCount 的页面顶部,例如:


页面顶部:


<?php 

$SectionCount = 0;

$pageClass = preg_replace( '/[^A-Za-z0-9_-]/', '', $pageTitle);

?>

然后您可以创建您独特的类,如下所示:


<section class="SectionOuter<?php echo $alt; ?> ClassPrefix-<?php echo $pageClass."-".($SectionCount++); ?>" >

<section class="SectionInner<?php echo $alt; ?> ClassPrefix-<?php echo $pageClass."-".($SectionCount++); ?>" >

现在,您可以单独定位每个页面的每个部分,如下所示:


.ClassPrefix-generated-page-class-1 { /* CSS HERE */ }

.ClassPrefix-generated-page-class-2 { /* CSS HERE */ }

/* etc */


查看完整回答
反对 回复 2023-09-22
  • 2 回答
  • 0 关注
  • 126 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信