Compare commits
99 Commits
三级分类
...
f4646f1e3a
| Author | SHA1 | Date | |
|---|---|---|---|
| f4646f1e3a | |||
| 5b3e505e9b | |||
| 624d7fde2f | |||
| a85f2c1b3a | |||
| 7ec97c39a7 | |||
| 67016c4e9a | |||
| 69c3634731 | |||
| 12bc6aeee7 | |||
| 2ca25e083e | |||
| df37a7c00d | |||
| 11e2c4f457 | |||
| edfc27b06a | |||
| fdc9064739 | |||
| 55a75b56b1 | |||
| 005457e13e | |||
| 3664861ef0 | |||
| b1b59a96f2 | |||
| 954ddbf8ba | |||
| 48f3c2b312 | |||
| 48e3d7f846 | |||
| 24e5554bc4 | |||
| 33929b8284 | |||
| c49c3b40d8 | |||
| 2eb7a41732 | |||
| 60177fe0b4 | |||
| c767c20641 | |||
| 64e5c4fe26 | |||
| 77e84f1086 | |||
| 128fb60bad | |||
| 3976ee745d | |||
| e5ccd8d031 | |||
| 991ca5b61c | |||
| d9000fbe1c | |||
| b7e09aeb04 | |||
| 91661b6bb4 | |||
| ded748ca87 | |||
| e4f509a9e5 | |||
| ae51682afe | |||
| be33b21b43 | |||
| db1ad0f88a | |||
| 4d34d76c4f | |||
| 276d901875 | |||
| c9bc2022e6 | |||
| 2c85df4a98 | |||
| 8311181967 | |||
| 99d49ee8a2 | |||
| 4035fe4751 | |||
| 634a758aff | |||
| 8ea03656d9 | |||
| 37023c6949 | |||
| 4fa32b56fe | |||
| 06078cf312 | |||
| 578ad475b7 | |||
| 8ced45364b | |||
| 88a91f3136 | |||
| 5fd603cbc6 | |||
| b92753c822 | |||
| ddd578eb08 | |||
| 9db66b7429 | |||
| c91895f57f | |||
| 42d9efdc02 | |||
| e16b8b6b41 | |||
| 8e4befc0ea | |||
| 1a43ad30fb | |||
| 1cdd0536b9 | |||
| c28b945858 | |||
| 9cc6dc3cd9 | |||
| 9845883d8e | |||
| 4d25f6fec8 | |||
| 5d44c45c13 | |||
| 2764ce3b86 | |||
| 7f472b0351 | |||
| 7cb270b313 | |||
| 14df140847 | |||
| 86ffcb99ac | |||
| 13e58c33a2 | |||
| c476193002 | |||
| 88e307a10e | |||
| 5643faad94 | |||
| 989f6c25a0 | |||
| 2e5103b19a | |||
| ca3c00f396 | |||
| c8d5661856 | |||
| 288c86ffbc | |||
| ccc551dcba | |||
| b6e8aa7880 | |||
| cc2bb999c0 | |||
| e7009c8a49 | |||
| 2a8f88637c | |||
| 1fc6f9067c | |||
| ffa6f29af8 | |||
| 476a238d27 | |||
| 18862c584f | |||
| ee9174e801 | |||
| 4c13d31cb9 | |||
| 3ed8e1f8fc | |||
| 1c998a4be1 | |||
| c3c67c9e59 | |||
| ef5d2c6ab9 |
4
.gitattributes
vendored
@@ -1,12 +1,10 @@
|
||||
*.eot filter=lfs diff=lfs merge=lfs -text
|
||||
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||
*.woff filter=lfs diff=lfs merge=lfs -text
|
||||
*.woff2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.svg filter=lfs diff=lfs merge=lfs -text
|
||||
*.tff filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.rar filter=lfs diff=lfs merge=lfs -text
|
||||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
*.gzip filter=lfs diff=lfs merge=lfs -text
|
||||
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||
*.otf filter=lfs diff=lfs merge=lfs -text
|
||||
|
||||
26
.gitea/workflows/dev-ci.yaml
Normal file
@@ -0,0 +1,26 @@
|
||||
name: Gitea Actions Official-website
|
||||
run-name: Deploy to ${{ inputs.deploy_target }} by @${{ gitea.actor }}
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- dev
|
||||
|
||||
jobs:
|
||||
deploy-dev:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Setup SSH
|
||||
run: |
|
||||
mkdir -p ~/.ssh
|
||||
echo "${{ secrets.SERVER_SSH_KEY }}" > ~/.ssh/id_rsa
|
||||
chmod 600 ~/.ssh/id_rsa
|
||||
ssh-keyscan -H ${{ secrets.SERVER_HOST }} >> ~/.ssh/known_hosts
|
||||
- name: Deploy application
|
||||
run: |
|
||||
ssh ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_HOST }} << 'EOF'
|
||||
set -e
|
||||
cd /www/wwwroot/dev.ow.f2b211.com
|
||||
|
||||
# 拉取最新代码
|
||||
git pull --rebase
|
||||
EOF
|
||||
11
.gitignore
vendored
@@ -7,12 +7,19 @@ Thumbs.db
|
||||
.env.dev
|
||||
.env.local
|
||||
.env.prod
|
||||
.htaccess
|
||||
.user.ini
|
||||
/404.html
|
||||
/index.html
|
||||
|
||||
public/dist
|
||||
public/dist*
|
||||
public/opendoc
|
||||
public/logo.png
|
||||
public/.well-known
|
||||
/.idea
|
||||
/.vscode
|
||||
/.zed
|
||||
/vendor
|
||||
/.settings
|
||||
/.buildpath
|
||||
/.project
|
||||
/.project
|
||||
|
||||
24
.zed/settings.json
Normal file
@@ -0,0 +1,24 @@
|
||||
// Folder-specific settings
|
||||
//
|
||||
// For a full list of overridable settings, and general information on folder-specific settings,
|
||||
// see the documentation: https://zed.dev/docs/configuring-zed#settings-files
|
||||
{
|
||||
"languages": {
|
||||
"PHP": {
|
||||
"language_servers": ["intelephense","!phpactor"]
|
||||
}
|
||||
},
|
||||
"lsp": {
|
||||
"intelephense": {
|
||||
"initialization_options": {
|
||||
"stubs": [
|
||||
"wordpress",
|
||||
"laravel",
|
||||
"symfony",
|
||||
"codeigniter",
|
||||
"thinkphp"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
208
LICENSE
Normal file
@@ -0,0 +1,208 @@
|
||||
Apache License
|
||||
|
||||
Version 2.0, January 2004
|
||||
|
||||
http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION,
|
||||
AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction, and distribution
|
||||
as defined by Sections 1 through 9 of this document.
|
||||
|
||||
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by the copyright
|
||||
owner that is granting the License.
|
||||
|
||||
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all other entities
|
||||
that control, are controlled by, or are under common control with that entity.
|
||||
For the purposes of this definition, "control" means (i) the power, direct
|
||||
or indirect, to cause the direction or management of such entity, whether
|
||||
by contract or otherwise, or (ii) ownership of fifty percent (50%) or more
|
||||
of the outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity exercising permissions
|
||||
granted by this License.
|
||||
|
||||
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications, including
|
||||
but not limited to software source code, documentation source, and configuration
|
||||
files.
|
||||
|
||||
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical transformation
|
||||
or translation of a Source form, including but not limited to compiled object
|
||||
code, generated documentation, and conversions to other media types.
|
||||
|
||||
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or Object form,
|
||||
made available under the License, as indicated by a copyright notice that
|
||||
is included in or attached to the work (an example is provided in the Appendix
|
||||
below).
|
||||
|
||||
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object form,
|
||||
that is based on (or derived from) the Work and for which the editorial revisions,
|
||||
annotations, elaborations, or other modifications represent, as a whole, an
|
||||
original work of authorship. For the purposes of this License, Derivative
|
||||
Works shall not include works that remain separable from, or merely link (or
|
||||
bind by name) to the interfaces of, the Work and Derivative Works thereof.
|
||||
|
||||
|
||||
|
||||
"Contribution" shall mean any work of authorship, including the original version
|
||||
of the Work and any modifications or additions to that Work or Derivative
|
||||
Works thereof, that is intentionally submitted to Licensor for inclusion in
|
||||
the Work by the copyright owner or by an individual or Legal Entity authorized
|
||||
to submit on behalf of the copyright owner. For the purposes of this definition,
|
||||
"submitted" means any form of electronic, verbal, or written communication
|
||||
sent to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems, and
|
||||
issue tracking systems that are managed by, or on behalf of, the Licensor
|
||||
for the purpose of discussing and improving the Work, but excluding communication
|
||||
that is conspicuously marked or otherwise designated in writing by the copyright
|
||||
owner as "Not a Contribution."
|
||||
|
||||
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
|
||||
of whom a Contribution has been received by Licensor and subsequently incorporated
|
||||
within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of this
|
||||
License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive,
|
||||
no-charge, royalty-free, irrevocable copyright license to reproduce, prepare
|
||||
Derivative Works of, publicly display, publicly perform, sublicense, and distribute
|
||||
the Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of this License,
|
||||
each Contributor hereby grants to You a perpetual, worldwide, non-exclusive,
|
||||
no-charge, royalty-free, irrevocable (except as stated in this section) patent
|
||||
license to make, have made, use, offer to sell, sell, import, and otherwise
|
||||
transfer the Work, where such license applies only to those patent claims
|
||||
licensable by such Contributor that are necessarily infringed by their Contribution(s)
|
||||
alone or by combination of their Contribution(s) with the Work to which such
|
||||
Contribution(s) was submitted. If You institute patent litigation against
|
||||
any entity (including a cross-claim or counterclaim in a lawsuit) alleging
|
||||
that the Work or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses granted to You
|
||||
under this License for that Work shall terminate as of the date such litigation
|
||||
is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the Work or
|
||||
Derivative Works thereof in any medium, with or without modifications, and
|
||||
in Source or Object form, provided that You meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or Derivative Works a copy
|
||||
of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices stating that
|
||||
You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works that You distribute,
|
||||
all copyright, patent, trademark, and attribution notices from the Source
|
||||
form of the Work, excluding those notices that do not pertain to any part
|
||||
of the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its distribution,
|
||||
then any Derivative Works that You distribute must include a readable copy
|
||||
of the attribution notices contained within such NOTICE file, excluding those
|
||||
notices that do not pertain to any part of the Derivative Works, in at least
|
||||
one of the following places: within a NOTICE text file distributed as part
|
||||
of the Derivative Works; within the Source form or documentation, if provided
|
||||
along with the Derivative Works; or, within a display generated by the Derivative
|
||||
Works, if and wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and do not modify the
|
||||
License. You may add Your own attribution notices within Derivative Works
|
||||
that You distribute, alongside or as an addendum to the NOTICE text from the
|
||||
Work, provided that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and may provide
|
||||
additional or different license terms and conditions for use, reproduction,
|
||||
or distribution of Your modifications, or for any such Derivative Works as
|
||||
a whole, provided Your use, reproduction, and distribution of the Work otherwise
|
||||
complies with the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise, any
|
||||
Contribution intentionally submitted for inclusion in the Work by You to the
|
||||
Licensor shall be under the terms and conditions of this License, without
|
||||
any additional terms or conditions. Notwithstanding the above, nothing herein
|
||||
shall supersede or modify the terms of any separate license agreement you
|
||||
may have executed with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade names,
|
||||
trademarks, service marks, or product names of the Licensor, except as required
|
||||
for reasonable and customary use in describing the origin of the Work and
|
||||
reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or agreed to
|
||||
in writing, Licensor provides the Work (and each Contributor provides its
|
||||
Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, either express or implied, including, without limitation, any warranties
|
||||
or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR
|
||||
A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness
|
||||
of using or redistributing the Work and assume any risks associated with Your
|
||||
exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory, whether
|
||||
in tort (including negligence), contract, or otherwise, unless required by
|
||||
applicable law (such as deliberate and grossly negligent acts) or agreed to
|
||||
in writing, shall any Contributor be liable to You for damages, including
|
||||
any direct, indirect, special, incidental, or consequential damages of any
|
||||
character arising as a result of this License or out of the use or inability
|
||||
to use the Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all other commercial
|
||||
damages or losses), even if such Contributor has been advised of the possibility
|
||||
of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing the Work
|
||||
or Derivative Works thereof, You may choose to offer, and charge a fee for,
|
||||
acceptance of support, warranty, indemnity, or other liability obligations
|
||||
and/or rights consistent with this License. However, in accepting such obligations,
|
||||
You may act only on Your own behalf and on Your sole responsibility, not on
|
||||
behalf of any other Contributor, and only if You agree to indemnify, defend,
|
||||
and hold each Contributor harmless for any liability incurred by, or claims
|
||||
asserted against, such Contributor by reason of your accepting any such warranty
|
||||
or additional liability. END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following boilerplate
|
||||
notice, with the fields enclosed by brackets "[]" replaced with your own identifying
|
||||
information. (Don't include the brackets!) The text should be enclosed in
|
||||
the appropriate comment syntax for the file format. We also recommend that
|
||||
a file or class name and description of purpose be included on the same "printed
|
||||
page" as the copyright notice for easier identification within third-party
|
||||
archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed 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.
|
||||
@@ -101,6 +101,8 @@ class BannerItem
|
||||
'rel_prod_cate_id',
|
||||
'title',
|
||||
'title_txt_color',
|
||||
'short_title',
|
||||
'short_title_txt_color',
|
||||
'desc',
|
||||
'desc_txt_color',
|
||||
'type',
|
||||
@@ -156,6 +158,8 @@ class BannerItem
|
||||
'rel_prod_cate_id',
|
||||
'title',
|
||||
'title_txt_color',
|
||||
'short_title',
|
||||
'short_title_txt_color',
|
||||
'desc',
|
||||
'desc_txt_color',
|
||||
'type',
|
||||
@@ -208,7 +212,7 @@ class BannerItem
|
||||
Log::error(sprintf('%s:%s %s', $th->getFile(), $th->getLine(), $th->getMessage()));
|
||||
return error('操作失败');
|
||||
}
|
||||
|
||||
|
||||
return success('操作成功');
|
||||
}
|
||||
|
||||
@@ -240,6 +244,7 @@ class BannerItem
|
||||
'banner_name' => '分类名称',
|
||||
'title' => '横幅名称',
|
||||
'title_txt_color' => '横幅名称字体颜色',
|
||||
'short_title' => '横幅简称',
|
||||
'desc' => '描述',
|
||||
'desc_txt_color' => '描述字体颜色',
|
||||
'type' => '前台显示类型',
|
||||
@@ -271,6 +276,7 @@ class BannerItem
|
||||
'banner.name' => 'banner_name',
|
||||
'item.title',
|
||||
'item.title_txt_color',
|
||||
'item.short_title',
|
||||
'item.desc',
|
||||
'item.desc_txt_color',
|
||||
'item.type',
|
||||
|
||||
@@ -342,6 +342,30 @@ class System
|
||||
'url' => (string)url('/index/topic/nas/download')
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
'id' => 8,
|
||||
'name' => '电力品线专题',
|
||||
'url' => '',
|
||||
'children' => [
|
||||
[
|
||||
'id' => 81,
|
||||
'name' => '首页',
|
||||
'url' => (string)url('/index/topic/power_prodline/index')
|
||||
],
|
||||
]
|
||||
],
|
||||
[
|
||||
'id' => 9,
|
||||
'name' => '笔记本(AI PC)专题',
|
||||
'url' => '',
|
||||
'children' => [
|
||||
[
|
||||
'id' => 91,
|
||||
'name' => '首页',
|
||||
'url' => (string)url('/index/topic/laptop/index')
|
||||
],
|
||||
]
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
@@ -32,7 +32,8 @@ class ProductCategoryModel extends ProductCategoryBaseModel
|
||||
// 所属产品目录分类id查询
|
||||
public function scopeTcoId($query, $value)
|
||||
{
|
||||
$query->where('related_tco_category', '=', $value);
|
||||
// $query->where('related_tco_category', '=', $value);
|
||||
$query->whereRaw('FIND_IN_SET(:ref_id, related_tco_category)', ['ref_id' => $value]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -23,7 +23,7 @@ class ProductCategoryValidate extends Validate
|
||||
'name' => 'require|max:64',
|
||||
'icon' => 'max:125',
|
||||
'desc' => 'max:255',
|
||||
'related_tco_category' => 'integer',
|
||||
'related_tco_category' => 'string|checkRelatedTcoCategory',
|
||||
'sort' => 'integer',
|
||||
'level' => 'integer',
|
||||
'is_show' => 'in:0,1',
|
||||
@@ -39,25 +39,26 @@ class ProductCategoryValidate extends Validate
|
||||
* @var array
|
||||
*/
|
||||
protected $message = [
|
||||
'id.require' => 'ID不能为空',
|
||||
'id.integer' => 'ID必须为整数',
|
||||
'language_id.require' => '语言ID不能为空',
|
||||
'language_id.integer' => '语言ID必须为整数',
|
||||
'unique_id.require' => '唯一标识不能为空',
|
||||
'pid.different' => '父级ID不能为自身',
|
||||
'pid.checkPidNotBeChildren' => '父级ID不能为自身的子分类',
|
||||
'pid.integer' => '父级ID必须为整数',
|
||||
'name.require' => '名称不能为空',
|
||||
'name.max' => '名称最多不能超过64个字符',
|
||||
'icon.max' => '图标最多不能超过125个字符',
|
||||
'desc.max' => '描述最多不能超过255个字符',
|
||||
'related_tco_category.integer' => '关联TCO分类格式错误',
|
||||
'sort.integer' => '排序格式错误',
|
||||
'level.integer' => '级别格式错误',
|
||||
'is_show.in' => '是否显示格式错误',
|
||||
'seo_title.max' => 'SEO标题最多不能超过255个字符',
|
||||
'seo_keywords.max' => 'SEO关键字最多不能超过255个字符',
|
||||
'seo_desc.max' => 'SEO描述最多不能超过255个字符',
|
||||
'id.require' => 'ID不能为空',
|
||||
'id.integer' => 'ID必须为整数',
|
||||
'language_id.require' => '语言ID不能为空',
|
||||
'language_id.integer' => '语言ID必须为整数',
|
||||
'unique_id.require' => '唯一标识不能为空',
|
||||
'pid.different' => '父级ID不能为自身',
|
||||
'pid.checkPidNotBeChildren' => '父级ID不能为自身的子分类',
|
||||
'pid.integer' => '父级ID必须为整数',
|
||||
'name.require' => '名称不能为空',
|
||||
'name.max' => '名称最多不能超过64个字符',
|
||||
'icon.max' => '图标最多不能超过125个字符',
|
||||
'desc.max' => '描述最多不能超过255个字符',
|
||||
'related_tco_category.string' => '关联TCO分类格式错误',
|
||||
'related_tco_category.checkRelatedTcoCategory' => '该TCO分类已绑定',
|
||||
'sort.integer' => '排序格式错误',
|
||||
'level.integer' => '级别格式错误',
|
||||
'is_show.in' => '是否显示格式错误',
|
||||
'seo_title.max' => 'SEO标题最多不能超过255个字符',
|
||||
'seo_keywords.max' => 'SEO关键字最多不能超过255个字符',
|
||||
'seo_desc.max' => 'SEO描述最多不能超过255个字符',
|
||||
];
|
||||
|
||||
// 验证pid
|
||||
@@ -84,4 +85,32 @@ class ProductCategoryValidate extends Validate
|
||||
{
|
||||
return $this->remove('id', 'require|integer')->remove('pid', 'different|checkPidNotBeChildren');
|
||||
}
|
||||
|
||||
// 验证related_tco_category
|
||||
protected function checkRelatedTcoCategory($value, $rule, $data = [])
|
||||
{
|
||||
if (empty($value)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
$val = ProductCategoryModel::where(function($query) use($value) {
|
||||
$arr = explode(",", $value);
|
||||
foreach ($arr as $v) {
|
||||
$query->whereFindInSet('related_tco_category', $v, 'OR');
|
||||
}
|
||||
})->column('id');
|
||||
if (!empty($val)) {
|
||||
$size = count($val);
|
||||
// 如果存在超过一个,直接验证失败
|
||||
if ($size > 1) {
|
||||
return false;
|
||||
}
|
||||
// 如果存在一个,并存在的id不为自身,验证失败(考虑更新场景查到自身情况)
|
||||
if ($size == 1 && $val[0] != $data['id']) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ class SysBannerItemValidate extends Validate
|
||||
'banner_id' => 'require|integer|gt:0',
|
||||
'title' => 'require|max:256',
|
||||
'title_txt_color' => 'max:7',
|
||||
'desc' => 'max:1024',
|
||||
'desc' => 'max:2048',
|
||||
'desc_txt_color' => 'max:7',
|
||||
'type' => 'in:image,video',
|
||||
'image' => 'max:255',
|
||||
@@ -45,7 +45,7 @@ class SysBannerItemValidate extends Validate
|
||||
'title.require' => '名称不能为空',
|
||||
'title.max' => '名称最多不能超过256个字符',
|
||||
'title_txt_color.max' => '名称字体颜色最多不能超过7个字符',
|
||||
'desc.max' => '描述最多不能超过1024个字符',
|
||||
'desc.max' => '描述最多不能超过2048个字符',
|
||||
'desc_txt_color.max' => '描述字体颜色最多不能超过7个字符',
|
||||
'type.in' => '显示类型必须是image或video',
|
||||
'image.max' => '图片地址最多不能超过255个字符',
|
||||
|
||||
@@ -17,22 +17,24 @@ class SysBannerItemBaseModel extends BaseModel
|
||||
|
||||
// 字段信息
|
||||
protected $schema = [
|
||||
'id' => 'int',
|
||||
'banner_id' => 'int',
|
||||
'title' => 'string',
|
||||
'title_txt_color' => 'string',
|
||||
'desc' => 'string',
|
||||
'desc_txt_color' => 'string',
|
||||
'type' => 'string',
|
||||
'image' => 'string',
|
||||
'extra_image' => 'string',
|
||||
'video' => 'string',
|
||||
'link_to' => 'string',
|
||||
'link' => 'string',
|
||||
'sort' => 'int',
|
||||
'status' => 'int',
|
||||
'created_at' => 'datetime',
|
||||
'updated_at' => 'datetime',
|
||||
'deleted_at' => 'datetime'
|
||||
'id' => 'int',
|
||||
'banner_id' => 'int',
|
||||
'title' => 'string',
|
||||
'title_txt_color' => 'string',
|
||||
'short_title' => 'string',
|
||||
'short_title_txt_color' => 'string',
|
||||
'desc' => 'string',
|
||||
'desc_txt_color' => 'string',
|
||||
'type' => 'string',
|
||||
'image' => 'string',
|
||||
'extra_image' => 'string',
|
||||
'video' => 'string',
|
||||
'link_to' => 'string',
|
||||
'link' => 'string',
|
||||
'sort' => 'int',
|
||||
'status' => 'int',
|
||||
'created_at' => 'datetime',
|
||||
'updated_at' => 'datetime',
|
||||
'deleted_at' => 'datetime'
|
||||
];
|
||||
}
|
||||
|
||||
@@ -210,7 +210,7 @@ abstract class Common extends BaseController
|
||||
];
|
||||
}
|
||||
unset($current);
|
||||
|
||||
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
|
||||
104
app/index/controller/TopicLaptop.php
Normal file
@@ -0,0 +1,104 @@
|
||||
<?php
|
||||
declare (strict_types = 1);
|
||||
|
||||
namespace app\index\controller;
|
||||
|
||||
use app\index\model\SysBannerModel;
|
||||
use think\facade\View;
|
||||
|
||||
class TopicLaptop extends Common
|
||||
{
|
||||
/**
|
||||
* 专题 - 笔记本电脑首页
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
|
||||
$banners = SysBannerModel::with([
|
||||
'items' => function ($query) {
|
||||
$query->withoutField(['sort', 'created_at', 'updated_at', 'deleted_at'])
|
||||
->order(['sort' => 'asc', 'id' => 'desc'])
|
||||
->enabled(true);
|
||||
}
|
||||
])
|
||||
->atPlatform(request()->from)
|
||||
->uniqueLabel([
|
||||
'BANNER_693a268c8aa5f', // 专题 - 笔记本首页 - 焦点图
|
||||
'BANNER_693a26b1ad252', // 专题 - 笔记本首页 - 性能介绍
|
||||
'BANNER_693a27b767c8c', // 专题 - 笔记本首页 - CPU介绍
|
||||
'BANNER_693a28740b8a7', // 专题 - 笔记本首页 - 显卡介绍
|
||||
'BANNER_693a28aa8412d', // 专题 - 笔记本首页 - 运行内存介绍
|
||||
'BANNER_693a29009fa72', // 专题 - 笔记本首页 - 硬盘介绍
|
||||
'BANNER_693a29263c609', // 专题 - 笔记本首页 - 散热系统介绍
|
||||
'BANNER_693a2959958bc', // 专题 - 笔记本首页 - 行业App运行介绍
|
||||
'BANNER_693a298342b38', // 专题 - 笔记本首页 - 柔光屏介绍
|
||||
'BANNER_693a2ad31fbe8', // 专题 - 笔记本首页 - 色域介绍
|
||||
'BANNER_693a2b0327ac3', // 专题 - 笔记本首页 - 防眩光介绍
|
||||
'BANNER_693a2cc70c762', // 专题 - 笔记本首页 - 外形质感介绍
|
||||
'BANNER_693a2d3113d14', // 专题 - 笔记本首页 - 网卡介绍
|
||||
'BANNER_693a2d53ac247', // 专题 - 笔记本首页 - 电池续航介绍
|
||||
'BANNER_693a2d7f5fa21', // 专题 - 笔记本首页 - 接口介绍
|
||||
'BANNER_693a2f2114eb3', // 专题 - 笔记本首页 - 使用场景焦点图
|
||||
'BANNER_693a2f92baaa3', // 专题 - 笔记本首页 - 摄像头/麦克风/安全介绍
|
||||
'BANNER_693a2fad26f55', // 专题 - 笔记本首页 - 系统预装介绍
|
||||
'BANNER_693a2ff4629bd', // 专题 - 笔记本首页 - 产品检测介绍
|
||||
'BANNER_693a30e9e4572', // 专题 - 笔记本首页 - 网页脚注
|
||||
])
|
||||
->language($this->lang_id)
|
||||
->enabled(true)
|
||||
->order(['sort' => 'asc', 'id' => 'desc'])
|
||||
->select();
|
||||
|
||||
$data = [];
|
||||
if (!$banners->isEmpty()) {
|
||||
$banners_map = [];
|
||||
foreach ($banners as $banner) {
|
||||
$banners_map[$banner->unique_label] = $banner;
|
||||
}
|
||||
|
||||
// 焦点图轮播图
|
||||
$data['top_focus_images'] = data_get($banners_map, 'BANNER_693a268c8aa5f')?->items->toArray();
|
||||
// 性能介绍
|
||||
$data['perf'] = data_get($banners_map, 'BANNER_693a26b1ad252')?->items->toArray();
|
||||
// CPU介绍
|
||||
$data['cpu'] = data_get($banners_map, 'BANNER_693a27b767c8c')?->items->toArray();
|
||||
// 显卡介绍
|
||||
$data['gpu'] = data_get($banners_map, 'BANNER_693a28740b8a7')?->items->toArray();
|
||||
// 运行内存介绍
|
||||
$data['ram'] = data_get($banners_map, 'BANNER_693a28aa8412d')?->items->first()?->toArray();
|
||||
// 硬盘介绍
|
||||
$data['hard_drive'] = data_get($banners_map, 'BANNER_693a29009fa72')?->items->toArray();
|
||||
// 散热系统介绍
|
||||
$data['cooling_system'] = data_get($banners_map, 'BANNER_693a29263c609')?->items->toArray();
|
||||
// 行业App运行介绍
|
||||
$data['apps'] = data_get($banners_map, 'BANNER_693a2959958bc')?->items->first()?->toArray();
|
||||
// 柔光屏介绍
|
||||
$data['screen_soft_light'] = data_get($banners_map, 'BANNER_693a298342b38')?->items->toArray();
|
||||
// 色域介绍
|
||||
$data['screen_color_gamut'] = data_get($banners_map, 'BANNER_693a2ad31fbe8')?->items->toArray();
|
||||
// 防眩光介绍
|
||||
$data['screen_anti_glare'] = data_get($banners_map, 'BANNER_693a2b0327ac3')?->items->toArray();
|
||||
// 外形质感介绍
|
||||
$data['exterior_texture'] = data_get($banners_map, 'BANNER_693a2cc70c762')?->items->toArray();
|
||||
// 网卡介绍
|
||||
$data['network_card'] = data_get($banners_map, 'BANNER_693a2d3113d14')?->items->toArray();
|
||||
// 电池续航介绍
|
||||
$data['battery_life'] = data_get($banners_map, 'BANNER_693a2d53ac247')?->items->toArray();
|
||||
// 接口介绍
|
||||
$data['interface'] = data_get($banners_map, 'BANNER_693a2d7f5fa21')?->items->toArray();
|
||||
// 使用场景焦点图
|
||||
$data['scene_focus_images'] = data_get($banners_map, 'BANNER_693a2f2114eb3')?->items->toArray();
|
||||
// 摄像头/麦克风/安全介绍
|
||||
$data['camare_microphone_security'] = data_get($banners_map, 'BANNER_693a2f92baaa3')?->items->toArray();
|
||||
// 系统预装介绍
|
||||
$data['unified_preinstall'] = data_get($banners_map, 'BANNER_693a2fad26f55')?->items->first()?->toArray();
|
||||
// 产品检测介绍
|
||||
$data['product_testing'] = data_get($banners_map, 'BANNER_693a2ff4629bd')?->items->toArray();
|
||||
// 网页脚注
|
||||
$data['webpage_footnotes'] = data_get($banners_map, 'BANNER_693a30e9e4572')?->items->first()?->toArray();
|
||||
}
|
||||
View::assign('data', $data);
|
||||
|
||||
return View::fetch('index');
|
||||
}
|
||||
}
|
||||
90
app/index/controller/TopicPowerProdline.php
Normal file
@@ -0,0 +1,90 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace app\index\controller;
|
||||
|
||||
use app\index\model\SysBannerModel;
|
||||
use think\facade\View;
|
||||
use think\Request;
|
||||
|
||||
/**
|
||||
* 专题 - 电力品线控制器
|
||||
*/
|
||||
class TopicPowerProdline extends Common
|
||||
{
|
||||
/**
|
||||
* 专题 - 电力品线首页
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$banners = SysBannerModel::with([
|
||||
'items' => function ($query) {
|
||||
$query->withoutField(['sort', 'created_at', 'updated_at', 'deleted_at'])
|
||||
->order(['sort' => 'asc', 'id' => 'desc'])
|
||||
->enabled(true);
|
||||
}
|
||||
])
|
||||
->atPlatform(request()->from)
|
||||
->uniqueLabel([
|
||||
'BANNER_691e729f2428d',
|
||||
'BANNER_691e732e4ad69',
|
||||
'BANNER_691e752d2bbe2',
|
||||
'BANNER_691e75561c4d3',
|
||||
'BANNER_691e75ec9391c',
|
||||
'BANNER_691e7616545bf',
|
||||
'BANNER_691e763fc08f4',
|
||||
'BANNER_691e765a27eba',
|
||||
'BANNER_691e76b6af393',
|
||||
])
|
||||
->language($this->lang_id)
|
||||
->enabled(true)
|
||||
->order(['sort' => 'asc', 'id' => 'desc'])
|
||||
->select();
|
||||
|
||||
$data = [];
|
||||
if (!$banners->isEmpty()) {
|
||||
$banners_map = [];
|
||||
foreach ($banners as $banner) {
|
||||
$banners_map[$banner->unique_label] = $banner;
|
||||
}
|
||||
// 焦点轮播图
|
||||
$focus_image = data_get($banners_map, 'BANNER_691e729f2428d')?->items->toArray();
|
||||
if (!empty($focus_image)) $data['focus_image'] = $focus_image;
|
||||
|
||||
// 分类
|
||||
$category = data_get($banners_map, 'BANNER_691e732e4ad69')?->items->toArray();
|
||||
if (!empty($category)) $data['category'] = $category;
|
||||
|
||||
// 为什么选择奥睿科相关数据
|
||||
$why_choose = data_get($banners_map, 'BANNER_691e752d2bbe2')?->items->toArray();
|
||||
if (!empty($why_choose)) $data['why_choose'] = $why_choose;
|
||||
|
||||
// 差旅充
|
||||
$travel_charger = data_get($banners_map, 'BANNER_691e75561c4d3')?->items->toArray();
|
||||
if (!empty($travel_charger)) $data['travel_charger'] = $travel_charger;
|
||||
|
||||
// 家居充
|
||||
$home_charger = data_get($banners_map, 'BANNER_691e75ec9391c')?->items->toArray();
|
||||
if (!empty($home_charger)) $data['home_charger'] = $home_charger;
|
||||
|
||||
// 桌面充
|
||||
$desktop_charger = data_get($banners_map, 'BANNER_691e7616545bf')?->items->toArray();
|
||||
if (!empty($desktop_charger)) $data['desktop_charger'] = $desktop_charger;
|
||||
|
||||
// 墙充
|
||||
$wall_charger = data_get($banners_map, 'BANNER_691e763fc08f4')?->items->toArray();
|
||||
if (!empty($wall_charger)) $data['wall_charger'] = $wall_charger;
|
||||
|
||||
// 转换器
|
||||
$converter = data_get($banners_map, 'BANNER_691e765a27eba')?->items->toArray();
|
||||
if (!empty($converter)) $data['converter'] = $converter;
|
||||
|
||||
// 底部介绍
|
||||
$footer_info = data_get($banners_map, 'BANNER_691e76b6af393')?->items->toArray();
|
||||
if (!empty($footer_info)) $data['footer_info'] = $footer_info;
|
||||
}
|
||||
View::assign('data', $data);
|
||||
|
||||
return View::fetch('index');
|
||||
}
|
||||
}
|
||||
@@ -92,9 +92,9 @@ return [
|
||||
],
|
||||
'attachment/video' => [
|
||||
'软件和驱动程序' => 'Software and Drivers',
|
||||
'您的浏览器不支持 video 标签。' => 'Your browser does not support HTML5 video.',
|
||||
'您的浏览器不支持 video 标签。' => 'Your browser does not support HTML5 video.',
|
||||
],
|
||||
|
||||
|
||||
// 联系我们批量购买页面
|
||||
'contactus/bulkbuy' => [
|
||||
'批量购买' => 'Bulk Buy',
|
||||
@@ -219,4 +219,21 @@ return [
|
||||
'联系我们' => 'Contact US',
|
||||
'目录' => 'Content'
|
||||
],
|
||||
];
|
||||
|
||||
// 笔记本专题 - 首页
|
||||
'topiclaptop/index' => [
|
||||
'CineBench R23 多核跑分' => 'Outperforms Ryzen 5 & Intel i5',
|
||||
'*此跑分为ORICO实验室测定所得,请以实际使用为准' => '*Data measured by ORICO Lab. Actual performance may vary.',
|
||||
'3DMARK Time Spy显卡得分' => 'Handles Office & Gaming with Ease',
|
||||
'肯辛通锁孔' => 'Kensington <br/> Lock Slot',
|
||||
'千兆网口' => 'Gigabit <br/> Ethernet',
|
||||
'USB-A<br/>(5Gbps)' => 'USB-A <br/> (5Gbps)',
|
||||
'3.5mm<br/>耳麦合一' => '3.5mm <br/> Combo Audio',
|
||||
'TF口3.0' => 'TF 3.0 <br/> Card Slot',
|
||||
'全功能<br/>USB-C' => 'All-in-One <br/> USB-C',
|
||||
"接口大满贯" => "Full-Featured Ports",
|
||||
"酷睿i5-12450H" => "Core i5-12450H",
|
||||
"锐龙9 6900HX" => "Ryzen9 6900HX",
|
||||
"标配多种接口,会议室连接电脑、</br>U盘传输文件、TF卡读取等,全都轻松搞定" => "Versatile Ports for Easy Connectivity. Effortlessly</br> link to projectors, U disks, TF cards, and more.",
|
||||
],
|
||||
];
|
||||
|
||||
@@ -224,4 +224,21 @@ return [
|
||||
'联系我们' => 'Contact US',
|
||||
'目录' => 'Content'
|
||||
],
|
||||
];
|
||||
|
||||
// 笔记本专题 - 首页
|
||||
'topiclaptop/index' => [
|
||||
'CineBench R23 多核跑分' => 'Outperforms Ryzen 5 & Intel i5',
|
||||
'*此跑分为ORICO实验室测定所得,请以实际使用为准' => '*Data measured by ORICO Lab. Actual performance may vary.',
|
||||
'3DMARK Time Spy显卡得分' => 'Handles Office & Gaming with Ease',
|
||||
'肯辛通锁孔' => 'Kensington <br/> Lock Slot',
|
||||
'千兆网口' => 'Gigabit <br/> Ethernet',
|
||||
'USB-A<br/>(5Gbps)' => 'USB-A <br/> (5Gbps)',
|
||||
'3.5mm<br/>耳麦合一' => '3.5mm <br/> Combo Audio',
|
||||
'TF口3.0' => 'TF 3.0 <br/> Card Slot',
|
||||
'全功能<br/>USB-C' => 'All-in-One <br/> USB-C',
|
||||
"接口大满贯" => "Full-Featured Ports",
|
||||
"酷睿i5-12450H" => "Core i5-12450H",
|
||||
"锐龙9 6900HX" => "Ryzen9 6900HX",
|
||||
"标配多种接口,会议室连接电脑、U盘传输文件、TF卡读取等,全都轻松搞定" => "Versatile Ports for Easy Connectivity. Effortlessly link to pro",
|
||||
],
|
||||
];
|
||||
|
||||
@@ -105,6 +105,18 @@ Route::group('topic', function () {
|
||||
// 专题-Nas软件下载页
|
||||
Route::get('download', 'TopicNas/download');
|
||||
});
|
||||
|
||||
// 专题 - 电力品线
|
||||
Route::group('power_prodline', function() {
|
||||
// 专题 - 电力品线首页
|
||||
Route::get('index', 'TopicPowerProdline/index');
|
||||
});
|
||||
|
||||
// 专题 - 笔记本电脑
|
||||
Route::group('laptop', function() {
|
||||
// 专题 - 笔记本电脑首页
|
||||
Route::get('index', 'TopicLaptop/index');
|
||||
});
|
||||
});
|
||||
|
||||
// 数据迁移
|
||||
|
||||
1270
app/index/view/mobile/topic_laptop/index.html
Normal file
765
app/index/view/mobile/topic_power_prodline/index.html
Normal file
@@ -0,0 +1,765 @@
|
||||
{extend name="public/base" /}
|
||||
{block name="style"}
|
||||
<!-- 将rem适配JS移到这里,确保优先执行 -->
|
||||
<script type="text/javascript">
|
||||
(function (doc, win) {
|
||||
var docEl = doc.documentElement;
|
||||
var resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize';
|
||||
|
||||
function setRootFontSize() {
|
||||
var clientWidth = docEl.clientWidth;
|
||||
if (!clientWidth) return;
|
||||
var fontSize = clientWidth / 7.5; // 750px/7.5=100px,375px/7.5=50px
|
||||
// 直接修改内联样式,优先级最高
|
||||
docEl.setAttribute('style', 'font-size: ' + fontSize + 'px !important;');
|
||||
}
|
||||
|
||||
setRootFontSize();
|
||||
win.addEventListener(resizeEvt, setRootFontSize);
|
||||
doc.addEventListener('DOMContentLoaded', setRootFontSize);
|
||||
})(document, window);
|
||||
</script>
|
||||
<link rel="stylesheet" href="__CSS__/topic_power_prodline/index.css">
|
||||
<link rel="stylesheet" href="__CSS__/topic_power_prodline/swiper.css">
|
||||
<link rel="stylesheet" href="__CSS__/topic_power_prodline/nav.css">
|
||||
<link rel="stylesheet" href="__CSS__/topic_power_prodline/advantage.css">
|
||||
<link rel="stylesheet" href="__CSS__/topic_power_prodline/moren.css">
|
||||
<link rel="stylesheet" href="__CSS__/topic_power_prodline/mask.css">
|
||||
<link rel="stylesheet" href="__CSS__/topic_power_prodline/product.css">
|
||||
<link rel="stylesheet" href="__CSS__/topic_power_prodline/product_list.css">
|
||||
<link rel="stylesheet" href="__CSS__/topic_power_prodline/product_card.css">
|
||||
<link rel="stylesheet" href="__CSS__/topic_power_prodline/footer.css">
|
||||
|
||||
{/block}
|
||||
{block name="header"}
|
||||
<!-- 重置header头为空 -->
|
||||
{/block}
|
||||
{block name="main"}
|
||||
<a class="header" href="/">
|
||||
<div class="header-img">
|
||||
<img src="__IMAGES__/logo.png" alt="">
|
||||
</div>
|
||||
</a>
|
||||
<!-- 轮播核心容器 -->
|
||||
<div class="swiper-container auto-swiper-container" >
|
||||
{notempty name="data.focus_image"}
|
||||
<div class="swiper-wrapper">
|
||||
{volist name="data.focus_image" id="fo"}
|
||||
<a class="swiper-slide auto-swiper-slide" href="{$fo.link}">
|
||||
<img src="{$fo.image}" alt="{$fo.title}" />
|
||||
</a>
|
||||
{/volist}
|
||||
</div>
|
||||
<div class="swiper-pagination"></div>
|
||||
{/notempty}
|
||||
</div>
|
||||
<!-- 分类 -->
|
||||
{notempty name="data.category"}
|
||||
<div class="nav-box">
|
||||
{volist name="data.category" id="ca"}
|
||||
<a class="nav-item" href="{$ca.link}">
|
||||
<img src="{$ca.image}" alt="{$ca.title}">
|
||||
<p {:style(['color'=>$ca.title_txt_color])}>{$ca.title}</p>
|
||||
</a>
|
||||
{/volist}
|
||||
</div>
|
||||
{/notempty}
|
||||
<!-- 500万 -->
|
||||
{notempty name="data.why_choose"}
|
||||
<div class="advantage-section">
|
||||
{assign name="why_choose_title" value=":array_shift($data.why_choose)" /}
|
||||
<h2 class="advantage-section__title">{$why_choose_title.title|default=''|raw}</h2>
|
||||
<div class="advantage-section__list">
|
||||
{volist name="data.why_choose" id="ch"}
|
||||
<div class="advantage-card-wrap">
|
||||
<div class="advantage-card" data-target="design">
|
||||
<img src="{$ch.image}" alt="{$ch.title}:{$ch.short_title}" class="advantage-card__img">
|
||||
<div class="advantage-card__content">
|
||||
<!-- 标题+箭头容器:水平+垂直双居中,内部文字左、箭头右 -->
|
||||
<div class="advantage-card__heading-wrap">
|
||||
<div class="advantage-card__heading" {:style(['color'=>$ch.title_txt_color])}>{$ch.title}</div>
|
||||
<img src="__IMAGES__/jiant.png" alt="" class="card-arrow">
|
||||
</div>
|
||||
<div class="advantage-card__description" {:style(['color'=>$ch.short_title_txt_color])}>{$ch.short_title}</div>
|
||||
<div style="display:none;" class="mack-conten-text">{$ch.desc|raw}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/volist}
|
||||
</div>
|
||||
</div>
|
||||
{/notempty}
|
||||
<!-- 产品差旅充 -->
|
||||
{notempty name="data.travel_charger"}
|
||||
<div class="product-box">
|
||||
{assign name="tc_title" value=":array_shift($data.travel_charger)" /}
|
||||
<div class="product-title">
|
||||
<h2 class="product-title-h2">{$tc_title.title|default=''}</h2>
|
||||
<p class="product-title-p">{$tc_title.short_title|default=''}</p>
|
||||
</div>
|
||||
<div class="product-container" >
|
||||
{assign name="tc_first_section_lf" value=":array_shift($data.travel_charger)" /}
|
||||
{notempty name="tc_first_section_lf"}
|
||||
<a class="product-left" href="{$tc_first_section_lf.link}">
|
||||
<img src="{$tc_first_section_lf.image}" alt="{$tc_first_section_lf.title}" class="product-img">
|
||||
<!-- 公共类+定位类:尺寸统一,定位不同 -->
|
||||
<div class="product-img-hover top55">
|
||||
<img src="{$tc_first_section_lf.extra_image}" alt="{$tc_first_section_lf.short_title}" class="img1">
|
||||
</div>
|
||||
</a>
|
||||
{/notempty}
|
||||
{assign name="tc_first_section_lr" value=":array_shift($data.travel_charger)" /}
|
||||
{notempty name="tc_first_section_lr"}
|
||||
<div class="product-right">
|
||||
<img src="{$tc_first_section_lr.image}" alt="{$tc_first_section_lr.title}" class="right-content right-img">
|
||||
<video src="{$tc_first_section_lr.video}" class="right-content right-video" muted loop playsinline>
|
||||
您的浏览器不支持HTML5视频播放,请升级浏览器
|
||||
</video>
|
||||
<button class="video-play-btn">
|
||||
<span class="play-icon">
|
||||
<svg width="40" height="40" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="12" cy="12" r="10" fill="rgba(0,0,0,0.5)" />
|
||||
<path d="M9 7L16 12L9 17V7Z" fill="white" />
|
||||
</svg>
|
||||
</span>
|
||||
<!-- 暂停图标(默认隐藏) -->
|
||||
<span class="pause-icon">
|
||||
<svg width="40" height="40" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="12" cy="12" r="10" fill="rgba(0,0,0,0.5)" />
|
||||
<rect x="8" y="7" width="3" height="10" fill="white" />
|
||||
<rect x="13" y="7" width="3" height="10" fill="white" />
|
||||
</svg>
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
{/notempty}
|
||||
</div>
|
||||
{assign name="tc_second_section" value=":array_splice($data.travel_charger, 0, 4)" /}
|
||||
{notempty name="tc_second_section"}
|
||||
<div class="product-card-box">
|
||||
<div class="product-card-container">
|
||||
{volist name="tc_second_section" id="tss"}
|
||||
<a class="product-card-wrap" href="{$tss.link}">
|
||||
<div class="product-card" >
|
||||
<div class="product-card-img">
|
||||
<img src="{$tss.image}" alt="{$tss.title}">
|
||||
</div>
|
||||
<div class="product-card-text">
|
||||
<div class="product-card-title" {:style(['color'=>$tss.title_txt_color])}>{$tss.title}</div>
|
||||
<div class="product-card-desc" {:style(['color'=>$tss.short_title_txt_color])}>{$tss.short_title}</div>
|
||||
</div>
|
||||
<div class="product-card-link">
|
||||
<img src="__IMAGES__/ljgd.png" alt="查看更多">
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
{/volist}
|
||||
</div>
|
||||
</div>
|
||||
{assign name="tc_three_section" value=":array_shift($data.travel_charger)" /}
|
||||
{notempty name="tc_three_section"}
|
||||
<a href="{$tc_three_section.link}" class="more">
|
||||
<div class="more-img">
|
||||
{$tc_three_section.title}
|
||||
</div>
|
||||
</a>
|
||||
{/notempty}
|
||||
{/notempty}
|
||||
</div>
|
||||
{/notempty}
|
||||
<!-- 产品 家居充-->
|
||||
{notempty name="data.home_charger"}
|
||||
<div class="product-box">
|
||||
{assign name="hc_title" value=":array_shift($data.home_charger)" /}
|
||||
<div class="product-title">
|
||||
<h2 class="product-title-h2">{$hc_title.title|default=''}</h2>
|
||||
<p class="product-title-p">{$hc_title.short_title|default=''}</p>
|
||||
</div>
|
||||
<div class="product-container">
|
||||
{assign name="hc_first_section_lf" value=":array_shift($data.home_charger)" /}
|
||||
{notempty name="hc_first_section_lf"}
|
||||
<a class="product-left" href="{$hc_first_section_lf.link}">
|
||||
<img src="{$hc_first_section_lf.image}" alt="{$hc_first_section_lf.title}" class="product-img">
|
||||
<!-- 公共类+定位类:尺寸统一,定位不同 -->
|
||||
<div class="product-img-hover">
|
||||
<img src="{$hc_first_section_lf.extra_image}" alt="{$hc_first_section_lf.short_title}" class="img2">
|
||||
</div>
|
||||
</a>
|
||||
{/notempty}
|
||||
{assign name="hc_first_section_lr" value=":array_shift($data.home_charger)" /}
|
||||
{notempty name="hc_first_section_lr"}
|
||||
<div class="product-right">
|
||||
<img src="{$hc_first_section_lr.image}" alt="{$hc_first_section_lr.title}" class="right-content right-img">
|
||||
<video src="{$hc_first_section_lr.video}" class="right-content right-video" muted loop playsinline >
|
||||
您的浏览器不支持HTML5视频播放,请升级浏览器
|
||||
</video>
|
||||
<button class="video-play-btn">
|
||||
<span class="play-icon">
|
||||
<svg width="40" height="40" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="12" cy="12" r="10" fill="rgba(0,0,0,0.5)" />
|
||||
<path d="M9 7L16 12L9 17V7Z" fill="white" />
|
||||
</svg>
|
||||
</span>
|
||||
<!-- 暂停图标(默认隐藏) -->
|
||||
<span class="pause-icon">
|
||||
<svg width="40" height="40" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="12" cy="12" r="10" fill="rgba(0,0,0,0.5)" />
|
||||
<rect x="8" y="7" width="3" height="10" fill="white" />
|
||||
<rect x="13" y="7" width="3" height="10" fill="white" />
|
||||
</svg>
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
{/notempty}
|
||||
</div>
|
||||
{assign name="hc_second_section" value=":array_splice($data.home_charger, 0, 4)" /}
|
||||
{notempty name="hc_second_section"}
|
||||
<div class="product-card-box">
|
||||
<div class="product-card-container">
|
||||
{volist name="hc_second_section" id="hcs"}
|
||||
<a class="product-card-wrap" href="{$hcs.link}">
|
||||
<div class="product-card" href="#">
|
||||
<div class="product-card-img">
|
||||
<img src="{$hcs.image}" alt="{$hcs.short_title}">
|
||||
</div>
|
||||
<div class="product-card-text">
|
||||
<div class="product-card-title">{$hcs.title}</div>
|
||||
<div class="product-card-desc">{$hcs.short_title}</div>
|
||||
</div>
|
||||
<div class="product-card-link">
|
||||
<img src="__IMAGES__/ljgd.png" alt="查看更多">
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
{/volist}
|
||||
</div>
|
||||
</div>
|
||||
{/notempty}
|
||||
{assign name="hc_three_section" value=":array_shift($data.home_charger)" /}
|
||||
{notempty name="hc_three_section"}
|
||||
<a href="{$hc_three_section.link}" class="more">
|
||||
<div class="more-img">
|
||||
{$hc_three_section.title}
|
||||
</div>
|
||||
</a>
|
||||
{/notempty}
|
||||
</div>
|
||||
{/notempty}
|
||||
<!-- 产品 桌面充(悬浮图上右超出)底部列表样式不一样(左文右图) -->
|
||||
<div class="product-box">
|
||||
{assign name="dc_title" value=":array_shift($data.desktop_charger)" /}
|
||||
<div class="product-title">
|
||||
<h2 class="product-title-h2">{$dc_title.title|default=''}</h2>
|
||||
<p class="product-title-p">{$dc_title.short_title|default=''}</p>
|
||||
</div>
|
||||
<div class="product-container">
|
||||
{assign name="dc_first_section_lf" value=":array_shift($data.desktop_charger)" /}
|
||||
{notempty name="dc_first_section_lf"}
|
||||
<a class="product-left" href="{$dc_first_section_lf.link}">
|
||||
<img src="{$dc_first_section_lf.image}" alt="{$dc_first_section_lf.short_title}" class="product-img">
|
||||
<!-- 公共类+定位类:尺寸和第一个完全一致,仅定位不同 -->
|
||||
<div class="product-img-hover right" >
|
||||
<img src="{$dc_first_section_lf.extra_image}" alt="{$dc_first_section_lf.short_title}" class="img3">
|
||||
</div>
|
||||
</a>
|
||||
{/notempty}
|
||||
{assign name="dc_first_section_lr" value=":array_shift($data.desktop_charger)" /}
|
||||
{notempty name="dc_first_section_lr"}
|
||||
<div class="product-right">
|
||||
<img src="{$dc_first_section_lr.image}"
|
||||
alt="使用场景" class="right-content right-img">
|
||||
<!--muted loop playsinline controls-->
|
||||
<video
|
||||
src="{$dc_first_section_lr.video}"
|
||||
class="right-content right-video" muted loop playsinline >
|
||||
您的浏览器不支持HTML5视频播放,请升级浏览器
|
||||
</video>
|
||||
<button class="video-play-btn">
|
||||
<span class="play-icon">
|
||||
<svg width="40" height="40" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="12" cy="12" r="10" fill="rgba(0,0,0,0.5)" />
|
||||
<path d="M9 7L16 12L9 17V7Z" fill="white" />
|
||||
</svg>
|
||||
</span>
|
||||
<!-- 暂停图标(默认隐藏) -->
|
||||
<span class="pause-icon">
|
||||
<svg width="40" height="40" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="12" cy="12" r="10" fill="rgba(0,0,0,0.5)" />
|
||||
<rect x="8" y="7" width="3" height="10" fill="white" />
|
||||
<rect x="13" y="7" width="3" height="10" fill="white" />
|
||||
</svg>
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
{/notempty}
|
||||
</div>
|
||||
{assign name="dc_second_section" value=":array_splice($data.desktop_charger, 0, 2)" /}
|
||||
{notempty name="dc_second_section"}
|
||||
<div class="product-card-box">
|
||||
<div class="product-card-container">
|
||||
{volist name="dc_second_section" id="dcs"}
|
||||
<a class="product-card-wrap" href="{$dcs.link}">
|
||||
<div class="product-card" href="#">
|
||||
<div class="product-card-img">
|
||||
<img src="{$dcs.image}" alt="{$dcs.short_title}">
|
||||
</div>
|
||||
<div class="product-card-text">
|
||||
<div class="product-card-title">{$dcs.title}</div>
|
||||
<div class="product-card-desc">{$dcs.short_title}</div>
|
||||
</div>
|
||||
<div class="product-card-link">
|
||||
<img src="__IMAGES__/ljgd.png" alt="查看更多">
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
{/volist}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/notempty}
|
||||
{assign name="dc_three_section" value=":array_shift($data.desktop_charger)" /}
|
||||
{notempty name="dc_three_section"}
|
||||
<a href="{$dc_three_section.link}" class="more">
|
||||
<div class="more-img">
|
||||
{$dc_three_section.title}
|
||||
</div>
|
||||
</a>
|
||||
{/notempty}
|
||||
</div>
|
||||
<!-- 墙插 -->
|
||||
{notempty name="data.wall_charger"}
|
||||
<div class="product-box">
|
||||
{assign name="wc_title" value=":array_shift($data.wall_charger)" /}
|
||||
<div class="product-title">
|
||||
<h2 class="product-title-h2">{$wc_title.title|default=''}</h2>
|
||||
<p class="product-title-p">{$wc_title.short_title|default=''}</p>
|
||||
</div>
|
||||
<div class="product-container">
|
||||
{assign name="wc_first_section_lf" value=":array_shift($data.wall_charger)" /}
|
||||
{notempty name="wc_first_section_lf"}
|
||||
<a class="product-left" href="{$wc_first_section_lf.link}">
|
||||
<img src="{$wc_first_section_lf.image}" alt="{$wc_first_section_lf.title}" class="product-img">
|
||||
<!-- 公共类+定位类:尺寸统一,定位不同 -->
|
||||
<div class="product-img-hover top70">
|
||||
<img src="{$wc_first_section_lf.extra_image}" alt="{$wc_first_section_lf.title}" class="img4">
|
||||
</div>
|
||||
</a>
|
||||
{/notempty}
|
||||
{assign name="wc_first_section_lr" value=":array_shift($data.wall_charger)" /}
|
||||
{notempty name="wc_first_section_lr"}
|
||||
<div class="product-right">
|
||||
<img src="{$wc_first_section_lr.image}" alt="{$wc_first_section_lr.title}" class="right-content right-img">
|
||||
<video src="{$wc_first_section_lr.video}" class="right-content right-video" muted loop playsinline>
|
||||
您的浏览器不支持HTML5视频播放,请升级浏览器
|
||||
</video>
|
||||
<button class="video-play-btn">
|
||||
<span class="play-icon">
|
||||
<svg width="40" height="40" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="12" cy="12" r="10" fill="rgba(0,0,0,0.5)" />
|
||||
<path d="M9 7L16 12L9 17V7Z" fill="white" />
|
||||
</svg>
|
||||
</span>
|
||||
<!-- 暂停图标(默认隐藏) -->
|
||||
<span class="pause-icon">
|
||||
<svg width="40" height="40" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="12" cy="12" r="10" fill="rgba(0,0,0,0.5)" />
|
||||
<rect x="8" y="7" width="3" height="10" fill="white" />
|
||||
<rect x="13" y="7" width="3" height="10" fill="white" />
|
||||
</svg>
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
{/notempty}
|
||||
</div>
|
||||
{assign name="wc_more_section" value=":array_shift($data.wall_charger)" /}
|
||||
{notempty name="wc_more_section"}
|
||||
<a href="{$wc_more_section.link}" class="more">
|
||||
<div class="more-img">
|
||||
{$wc_more_section.title}
|
||||
</div>
|
||||
</a>
|
||||
{/notempty}
|
||||
</div>
|
||||
{/notempty}
|
||||
{notempty name="data.converter"}
|
||||
<!-- 转换器 -->
|
||||
<div class="product-box">
|
||||
{assign name="ct_title" value=":array_shift($data.converter)" /}
|
||||
<div class="product-title">
|
||||
<h2 class="product-title-h2">{$ct_title.title|default=''}</h2>
|
||||
<p class="product-title-p">{$ct_title.short_title|default=''}</p>
|
||||
</div>
|
||||
{assign name="ct_more_section" value=":array_pop($data.converter)" /}
|
||||
{assign name="ct_chunk_section" value=":array_chunk($data.converter, 2)" /}
|
||||
{assign name="ct_chunk_section_len" value=":count($ct_chunk_section)" /}
|
||||
{volist name="ct_chunk_section" id="cts" key="k"}
|
||||
<div class="product-container">
|
||||
{assign name="cts_lf" value=":array_shift($cts)" /}
|
||||
{notempty name="cts_lf"}
|
||||
<a class="product-left" href="{$cts_lf.link}">
|
||||
<img src="{$cts_lf.image}" alt="{$cts_lf.title}" class="product-img">
|
||||
<!-- 公共类+定位类:尺寸统一,定位不同 -->
|
||||
<!--style="display:flex;justify-content: center;"-->
|
||||
<div class="product-img-hover top40" >
|
||||
<!-- style="width:70%"-->
|
||||
<img src="{$cts_lf.extra_image}" alt="{$cts_lf.title}" class="img5">
|
||||
</div>
|
||||
</a>
|
||||
{/notempty}
|
||||
{assign name="cts_lr" value=":array_shift($cts)" /}
|
||||
{notempty name="cts_lr"}
|
||||
<div class="product-right">
|
||||
<img src="{$cts_lr.image}" alt="{$cts_lr.title}" class="right-content right-img">
|
||||
<video src="{$cts_lr.video}" class="right-content right-video" muted loop playsinline>
|
||||
您的浏览器不支持HTML5视频播放,请升级浏览器
|
||||
</video>
|
||||
<!-- 播放图标 -->
|
||||
<button class="video-play-btn">
|
||||
<span class="play-icon">
|
||||
<svg width="40" height="40" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="12" cy="12" r="10" fill="rgba(0,0,0,0.5)" />
|
||||
<path d="M9 7L16 12L9 17V7Z" fill="white" />
|
||||
</svg>
|
||||
</span>
|
||||
<!-- 暂停图标(默认隐藏) -->
|
||||
<span class="pause-icon">
|
||||
<svg width="40" height="40" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="12" cy="12" r="10" fill="rgba(0,0,0,0.5)" />
|
||||
<rect x="8" y="7" width="3" height="10" fill="white" />
|
||||
<rect x="13" y="7" width="3" height="10" fill="white" />
|
||||
</svg>
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
{/notempty}
|
||||
</div>
|
||||
{neq name="k" value="$ct_chunk_section_len"}
|
||||
<div class="line"></div>
|
||||
{/neq}
|
||||
{/volist}
|
||||
{notempty name="ct_more_section"}
|
||||
<a href="{$ct_more_section.link}" class="more">
|
||||
<div class="more-img">
|
||||
{$ct_more_section.title}
|
||||
</div>
|
||||
</a>
|
||||
{/notempty}
|
||||
</div>
|
||||
{/notempty}
|
||||
{notempty name="data.footer_info"}
|
||||
<!-- 底部 -->
|
||||
<div class="prodline-footer-box">
|
||||
<div class="prodline-footer-box-img">
|
||||
<img src="{$data.footer_info.0.image}" alt="">
|
||||
</div>
|
||||
</div>
|
||||
{/notempty}
|
||||
<!-- 蒙版 -->
|
||||
<div class="mask" id="mask">
|
||||
<div class="mask-content" >
|
||||
<span class="close-btn">×</span>
|
||||
<div class="mask-scroll-content"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
{/block}
|
||||
{block name="script"}
|
||||
<script type="text/javascript">
|
||||
let swiper=null;
|
||||
const advantageItems = document.querySelectorAll('.advantage-card');
|
||||
let scrollTop = 0; // 保存页面滚动位置
|
||||
let closeBtnHtml = null; // 关闭按钮元素(全局变量,避免重复创建)
|
||||
const mask = document.getElementById('mask');
|
||||
const maskContent = document.querySelector('.mask-content');
|
||||
const maskScrollContent = document.querySelector('.mask-scroll-content'); // 滚动容器(关键!)
|
||||
const closeBtn = document.querySelector('.close-btn')
|
||||
// 初始化:确保 maskScrollContent 存在于 maskContent 中(避免被清空)
|
||||
if (!maskScrollContent) {
|
||||
// 如果页面没有 mask-scroll-content,动态创建(确保结构稳定)
|
||||
const scrollContent = document.createElement('div');
|
||||
scrollContent.className = 'mask-scroll-content';
|
||||
maskContent.appendChild(scrollContent);
|
||||
}
|
||||
|
||||
function createCloseBtn() {
|
||||
if (closeBtnHtml) {
|
||||
closeBtnHtml.remove();
|
||||
}
|
||||
|
||||
closeBtnHtml = document.createElement('span');
|
||||
closeBtnHtml.className = 'close-btn';
|
||||
closeBtnHtml.innerHTML = '×';
|
||||
|
||||
closeBtnHtml.addEventListener('click', hideMask);
|
||||
|
||||
// 挂载到 maskContent(而非 scrollContent),避免被滚动影响位置
|
||||
maskContent.prepend(closeBtnHtml);
|
||||
}
|
||||
|
||||
function showMask(contentHtml) {
|
||||
// 保存页面滚动位置
|
||||
scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
|
||||
|
||||
// 关键:将内容填充到 scrollContent 中(而非直接替换 maskContent)
|
||||
maskScrollContent.innerHTML = contentHtml;
|
||||
createCloseBtn();
|
||||
|
||||
// 显示蒙版
|
||||
mask.style.display = 'flex';
|
||||
|
||||
// 禁止滚动(复用你的逻辑)
|
||||
document.documentElement.classList.add('no-scroll');
|
||||
document.body.classList.add('no-scroll');
|
||||
document.body.style.top = `-${scrollTop}px`;
|
||||
|
||||
// 额外:打开蒙版时就重置滚动位置(避免残留上次滚动状态)
|
||||
maskScrollContent.scrollTop = 0;
|
||||
}
|
||||
|
||||
function hideMask() {
|
||||
// 关键步骤 1:先重置 scrollContent 的滚动位置(此时元素还未被销毁)
|
||||
maskScrollContent.scrollTop = 0;
|
||||
|
||||
// 关键步骤 2:清空 scrollContent 的内容(而非 maskContent)
|
||||
maskScrollContent.innerHTML = "";
|
||||
|
||||
// 隐藏蒙版
|
||||
mask.style.display = 'none';
|
||||
|
||||
// 恢复滚动(复用你的逻辑)
|
||||
document.documentElement.classList.remove('no-scroll');
|
||||
document.body.classList.remove('no-scroll');
|
||||
document.body.style.top = '';
|
||||
|
||||
// 还原页面滚动位置
|
||||
window.scrollTo(0, scrollTop);
|
||||
|
||||
// 移除关闭按钮(可选,避免残留)
|
||||
if (closeBtnHtml) {
|
||||
closeBtnHtml.remove();
|
||||
closeBtnHtml = null;
|
||||
}
|
||||
}
|
||||
// 点击卡片显示详情
|
||||
advantageItems.forEach((item) => {
|
||||
item.addEventListener('click', (e) => {
|
||||
// 获取当前点击卡片内的.mack-conten-text元素
|
||||
const currentMackContent = e.currentTarget.querySelector('.mack-conten-text');
|
||||
if (currentMackContent) {
|
||||
// 关键修改:获取该元素的子内容(innerHTML 本身就是内部HTML,不含当前元素标签)
|
||||
// 若想更彻底,可遍历子节点拼接内容(兼容特殊场景)
|
||||
let contentHtml = '';
|
||||
Array.from(currentMackContent.childNodes).forEach(child => {
|
||||
// 只保留元素节点和文本节点(过滤空节点)
|
||||
if (child.nodeType === 1 || child.nodeType === 3) {
|
||||
contentHtml += child.outerHTML || child.textContent;
|
||||
}
|
||||
});
|
||||
// 显示蒙版并传入纯净的子内容
|
||||
showMask(contentHtml);
|
||||
}
|
||||
});
|
||||
});
|
||||
// 关闭按钮事件
|
||||
closeBtn.addEventListener('click', hideMask);
|
||||
// 点击蒙版背景关闭(可选)
|
||||
mask.addEventListener('click', (e) => {
|
||||
if (e.target === mask) hideMask();
|
||||
});
|
||||
|
||||
// ESC 键关闭(可选)
|
||||
document.addEventListener('keydown', (e) => {
|
||||
if (e.key === 'Escape' && mask.style.display === 'flex') hideMask();
|
||||
});
|
||||
|
||||
// 关键:拦截蒙版的 touchmove 事件,阻止滚动穿透(移动端核心)
|
||||
mask.addEventListener(
|
||||
'touchmove',
|
||||
(e) => {
|
||||
// 只有点击蒙版背景(不是内容区域)才阻止滚动
|
||||
if (e.target === mask) {
|
||||
e.preventDefault(); // 阻止默认触摸滚动行为
|
||||
e.stopPropagation(); // 阻止事件冒泡
|
||||
}
|
||||
},
|
||||
{ passive: false }
|
||||
); // passive: false 必须,否则 preventDefault 无效
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
// 初始化所有视频容器
|
||||
function initVideoContainers() {
|
||||
const productRights = document.querySelectorAll('.product-right');
|
||||
// 支持的视频格式
|
||||
const supportedVideoFormats = ['.mp4', '.webm', '.ogg', '.mov', '.avi', '.mkv', '.flv', '.wmv'];
|
||||
productRights.forEach((container, index) => {
|
||||
const video = container.querySelector('.right-video');
|
||||
const btn = container.querySelector('.video-play-btn');
|
||||
const img = container.querySelector('.right-img');
|
||||
if (!video || !btn || !img) return;
|
||||
const videoSrc = video.src.trim()
|
||||
console.log(videoSrc,'=videoSrc=')
|
||||
// 修复:正确检测有效视频地址
|
||||
// 排除空字符串、null、undefined
|
||||
const hasValidVideo = !!videoSrc && videoSrc.trim() !== '' && videoSrc !== 'undefined' && videoSrc !== 'null';
|
||||
|
||||
// 验证视频格式是否有效
|
||||
const isValidFormat = supportedVideoFormats.some(format =>
|
||||
videoSrc.toLowerCase().endsWith(format) ||
|
||||
(videoSrc.includes('?') && videoSrc.toLowerCase().split('?')[0].endsWith(format))
|
||||
);
|
||||
|
||||
// 初始化状态:无视频或格式无效则保持图片显示,永不切换
|
||||
if (!hasValidVideo || !isValidFormat) {
|
||||
img.style.display = 'block';
|
||||
video.style.display = 'none';
|
||||
btn.style.display = 'none';
|
||||
// 绑定空方法,防止调用报错
|
||||
video.switchMedia = function() {};
|
||||
console.log(`容器${index}:无有效视频(src="${videoSrc}"),保持图片显示`);
|
||||
return;
|
||||
}
|
||||
|
||||
// 有有效视频的情况
|
||||
console.log(`容器${index}:有有效视频(src="${videoSrc}"),初始化播放逻辑`);
|
||||
|
||||
// 初始状态
|
||||
video.style.display = 'none';
|
||||
video.pause();
|
||||
img.style.display = 'block';
|
||||
btn.style.display = 'none';
|
||||
btn.style.opacity = '0';
|
||||
|
||||
// 同步状态函数
|
||||
function syncMediaState() {
|
||||
if (img.style.display === 'block') {
|
||||
btn.style.display = 'none';
|
||||
btn.style.opacity = '0';
|
||||
} else {
|
||||
btn.style.display = 'block';
|
||||
btn.style.opacity = '1';
|
||||
btn.classList.toggle('paused', !video.paused && !video.ended);
|
||||
}
|
||||
}
|
||||
|
||||
// 按钮点击事件
|
||||
btn.addEventListener('click', () => {
|
||||
if (video.paused) {
|
||||
video.play().catch(() => syncMediaState());
|
||||
} else {
|
||||
video.pause();
|
||||
}
|
||||
syncMediaState();
|
||||
});
|
||||
|
||||
// 视频事件监听
|
||||
['play', 'pause', 'ended', 'playing', 'waiting'].forEach(event => {
|
||||
video.addEventListener(event, syncMediaState);
|
||||
});
|
||||
|
||||
// 滚动切换函数
|
||||
video.switchMedia = function(showVideo) {
|
||||
// 只处理有有效视频的情况
|
||||
if (showVideo) {
|
||||
img.style.display = 'none';
|
||||
video.style.display = 'block';
|
||||
video.play().catch(() => {
|
||||
console.log(`容器${index}:自动播放失败,需要用户交互`);
|
||||
syncMediaState();
|
||||
});
|
||||
} else {
|
||||
video.pause();
|
||||
img.style.display = 'block';
|
||||
video.style.display = 'none';
|
||||
}
|
||||
syncMediaState();
|
||||
};
|
||||
|
||||
// 初始同步
|
||||
syncMediaState();
|
||||
});
|
||||
}
|
||||
|
||||
// 滚动监听 - 优化版
|
||||
function setupScrollWatcher() {
|
||||
let ticking = false;
|
||||
|
||||
function updateVideoVisibility() {
|
||||
const productRights = document.querySelectorAll('.product-right');
|
||||
|
||||
productRights.forEach(container => {
|
||||
const video = container.querySelector('.right-video');
|
||||
if (!video || !video.switchMedia) return;
|
||||
|
||||
// 检查是否在视口中
|
||||
const rect = container.getBoundingClientRect();
|
||||
const viewHeight = window.innerHeight || document.documentElement.clientHeight;
|
||||
const isInView = rect.top < viewHeight * 0.7 && rect.bottom > viewHeight * 0.3;
|
||||
|
||||
// 只对有有效视频的元素调用switchMedia
|
||||
video.switchMedia(isInView);
|
||||
});
|
||||
|
||||
ticking = false;
|
||||
}
|
||||
|
||||
// 使用requestAnimationFrame优化性能
|
||||
window.addEventListener('scroll', () => {
|
||||
if (!ticking) {
|
||||
requestAnimationFrame(updateVideoVisibility);
|
||||
ticking = true;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 初始化
|
||||
initVideoContainers();
|
||||
setupScrollWatcher();
|
||||
|
||||
// 初始检查一次
|
||||
setTimeout(() => {
|
||||
const event = new Event('scroll');
|
||||
window.dispatchEvent(event);
|
||||
}, 300);
|
||||
});
|
||||
|
||||
window.onload = function () {
|
||||
if (typeof Swiper === 'undefined') {
|
||||
console.error('Swiper加载失败,请刷新页面重试');
|
||||
return;
|
||||
}
|
||||
|
||||
swiper = new Swiper('.auto-swiper-container', {
|
||||
autoplay: {
|
||||
delay: 3000, // 3秒切换
|
||||
disableOnInteraction: false,
|
||||
},
|
||||
loop: false,
|
||||
slidesPerView: 1,
|
||||
spaceBetween: 0,
|
||||
// 启用分页指示标(核心配置)
|
||||
pagination: {
|
||||
el: '.swiper-pagination', // 对应 HTML 中的指示标容器
|
||||
clickable: true, // 允许点击指示标切换
|
||||
// dynamicBullets: true, // 动态指示标(当前激活放大)
|
||||
//dynamicMainBullets: 3, // 动态模式显示3个核心指示标
|
||||
},
|
||||
navigation: false,
|
||||
scrollbar: false,
|
||||
on: {
|
||||
resize: function () {
|
||||
this.update();
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
window.addEventListener('resize', function () {
|
||||
swiper.update();
|
||||
});
|
||||
|
||||
// 初始化时触发滚动事件,确保状态正确
|
||||
window.dispatchEvent(new Event('scroll'));
|
||||
};
|
||||
</script>
|
||||
{/block}
|
||||
@@ -125,6 +125,43 @@
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
$('.header-PC #header .navItem>a').each(function(idx, item) {
|
||||
var _item = $(item);
|
||||
_item.removeClass('active');
|
||||
if (_item.attr('href') && compareUrls(location.href, _item.get(0).href)) {
|
||||
_item.addClass('active').siblings();
|
||||
}
|
||||
});
|
||||
|
||||
// 比较两个URL是否相等(支持只有path的情况,并处理有无.html后缀的情况)
|
||||
function compareUrls(url1, url2) {
|
||||
// 如果输入的是相对路径,添加当前域名
|
||||
if (!url1.startsWith('http')) {
|
||||
url1 = window.location.origin + (url1.startsWith('/') ? '' : '/') + url1;
|
||||
}
|
||||
if (!url2.startsWith('http')) {
|
||||
url2 = window.location.origin + (url2.startsWith('/') ? '' : '/') + url2;
|
||||
}
|
||||
|
||||
// 将两个URL转换为URL对象
|
||||
const urlObj1 = new URL(url1);
|
||||
const urlObj2 = new URL(url2);
|
||||
|
||||
// 获取路径名并移除末尾的斜杠
|
||||
let path1 = urlObj1.pathname.replace(/\/$/, '');
|
||||
let path2 = urlObj2.pathname.replace(/\/$/, '');
|
||||
|
||||
// 移除.html后缀
|
||||
path1 = path1.replace(/\.html$/, '');
|
||||
path2 = path2.replace(/\.html$/, '');
|
||||
|
||||
// 比较处理后的路径
|
||||
return path1 === path2;
|
||||
}
|
||||
})
|
||||
</script>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
// 搜索历史记录处理
|
||||
@@ -247,4 +284,4 @@
|
||||
$('#top-country').hide();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</script>
|
||||
|
||||
1499
app/index/view/pc/topic_laptop/index.html
Normal file
573
app/index/view/pc/topic_power_prodline/index.html
Normal file
@@ -0,0 +1,573 @@
|
||||
{extend name="public/base" /}
|
||||
{block name="style"}
|
||||
<link rel="stylesheet" href="__CSS__/topic_power_prodline/index.css">
|
||||
<link rel="stylesheet" href="__CSS__/topic_power_prodline/swiper.css">
|
||||
<link rel="stylesheet" href="__CSS__/topic_power_prodline/nav.css">
|
||||
<link rel="stylesheet" href="__CSS__/topic_power_prodline/advantage.css">
|
||||
<link rel="stylesheet" href="__CSS__/topic_power_prodline/mask.css">
|
||||
<link rel="stylesheet" href="__CSS__/topic_power_prodline/product.css">
|
||||
<link rel="stylesheet" href="__CSS__/topic_power_prodline/product_list.css">
|
||||
<link rel="stylesheet" href="__CSS__/topic_power_prodline/product_card.css">
|
||||
<link rel="stylesheet" href="__CSS__/topic_power_prodline/footer.css">
|
||||
{/block}
|
||||
{block name="main"}
|
||||
<!-- 轮播核心容器 -->
|
||||
<div class="swiper-container auto-swiper-container" >
|
||||
{notempty name="data.focus_image"}
|
||||
<div class="swiper-wrapper">
|
||||
{volist name="data.focus_image" id="fo"}
|
||||
<a class="swiper-slide auto-swiper-slide" href="{$fo.link}">
|
||||
<img src="{$fo.image}" alt="{$fo.title}" />
|
||||
</a>
|
||||
{/volist}
|
||||
</div>
|
||||
<div class="swiper-pagination"></div>
|
||||
{/notempty}
|
||||
</div>
|
||||
<!-- 分类 -->
|
||||
{notempty name="data.category"}
|
||||
<div class="nav-box">
|
||||
{volist name="data.category" id="ca"}
|
||||
<a class="nav-item" href="{$ca.link}">
|
||||
<img src="{$ca.image}" alt="{$ca.title}">
|
||||
<p {:style(['color'=>$ca.title_txt_color])}>{$ca.title}</p>
|
||||
</a>
|
||||
{/volist}
|
||||
</div>
|
||||
{/notempty}
|
||||
<!-- 500万 -->
|
||||
{notempty name="data.why_choose"}
|
||||
<div class="advantage-section">
|
||||
{assign name="why_choose_title" value=":array_shift($data.why_choose)" /}
|
||||
<h2 class="advantage-section__title">{$why_choose_title.title|default=''|raw}</h2>
|
||||
<div class="advantage-section__list">
|
||||
{volist name="data.why_choose" id="ch"}
|
||||
<div class="advantage-card-wrap">
|
||||
<div class="advantage-card" data-target="design">
|
||||
<img src="{$ch.image}" alt="{$ch.title}:{$ch.short_title}" class="advantage-card__img">
|
||||
<div class="advantage-card__content">
|
||||
<!-- 标题+箭头容器:水平+垂直双居中,内部文字左、箭头右 -->
|
||||
<div class="advantage-card__heading-wrap">
|
||||
<div class="advantage-card__heading" {:style(['color'=>$ch.title_txt_color])}>{$ch.title}</div>
|
||||
<img src="__IMAGES__/jiant.png" alt="" class="card-arrow">
|
||||
</div>
|
||||
<div class="advantage-card__description" {:style(['color'=>$ch.short_title_txt_color])}>{$ch.short_title}</div>
|
||||
<div style="display:none;" class="mack-conten-text">{$ch.desc|raw}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/volist}
|
||||
</div>
|
||||
</div>
|
||||
{/notempty}
|
||||
<!-- 产品差旅充 -->
|
||||
{notempty name="data.travel_charger"}
|
||||
<div class="product-box">
|
||||
{assign name="tc_title" value=":array_shift($data.travel_charger)" /}
|
||||
<div class="product-title">
|
||||
<h2 class="product-title-h2">{$tc_title.title|default=''}</h2>
|
||||
<p class="product-title-p">{$tc_title.short_title|default=''}</p>
|
||||
</div>
|
||||
<div class="product-container" >
|
||||
{assign name="tc_first_section_lf" value=":array_shift($data.travel_charger)" /}
|
||||
{notempty name="tc_first_section_lf"}
|
||||
<a class="product-left" href="{$tc_first_section_lf.link}">
|
||||
<img src="{$tc_first_section_lf.image}" alt="{$tc_first_section_lf.title}" class="product-img">
|
||||
<!-- 公共类+定位类:尺寸统一,定位不同 -->
|
||||
<div class="product-img-hover product-img-1">
|
||||
<img src="{$tc_first_section_lf.extra_image}" alt="{$tc_first_section_lf.short_title}">
|
||||
</div>
|
||||
</a>
|
||||
{/notempty}
|
||||
{assign name="tc_first_section_lr" value=":array_shift($data.travel_charger)" /}
|
||||
{notempty name="tc_first_section_lr"}
|
||||
<div class="product-right">
|
||||
<img src="{$tc_first_section_lr.image}" alt="{$tc_first_section_lr.title}" class="right-content right-img">
|
||||
<video src="{$tc_first_section_lr.video}" class="right-content right-video" muted loop playsinline controls>
|
||||
您的浏览器不支持HTML5视频播放,请升级浏览器
|
||||
</video>
|
||||
</div>
|
||||
{/notempty}
|
||||
</div>
|
||||
{assign name="tc_second_section" value=":array_splice($data.travel_charger, 0, 4)" /}
|
||||
{notempty name="tc_second_section"}
|
||||
<div class="product-card-box">
|
||||
<div class="product-card-container">
|
||||
{volist name="tc_second_section" id="tss"}
|
||||
<a class="product-card-wrap" href="{$tss.link}">
|
||||
<div class="product-card" >
|
||||
<div class="product-card-img">
|
||||
<img src="{$tss.image}" alt="{$tss.title}">
|
||||
</div>
|
||||
<div class="product-card-text">
|
||||
<div class="product-card-title" {:style(['color'=>$tss.title_txt_color])}>{$tss.title}</div>
|
||||
<div class="product-card-desc" {:style(['color'=>$tss.short_title_txt_color])}>{$tss.short_title}</div>
|
||||
</div>
|
||||
<div class="product-card-link">
|
||||
<img src="__IMAGES__/ljgd.png" alt="查看更多">
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
{/volist}
|
||||
</div>
|
||||
</div>
|
||||
{assign name="tc_three_section" value=":array_shift($data.travel_charger)" /}
|
||||
{notempty name="tc_three_section"}
|
||||
<a href="{$tc_three_section.link}" class="more">
|
||||
<div class="more-img">
|
||||
{$tc_three_section.title}
|
||||
</div>
|
||||
</a>
|
||||
{/notempty}
|
||||
{/notempty}
|
||||
</div>
|
||||
{/notempty}
|
||||
<!-- 产品 家居充-->
|
||||
{notempty name="data.home_charger"}
|
||||
<div class="product-box">
|
||||
{assign name="hc_title" value=":array_shift($data.home_charger)" /}
|
||||
<div class="product-title">
|
||||
<h2 class="product-title-h2">{$hc_title.title|default=''}</h2>
|
||||
<p class="product-title-p">{$hc_title.short_title|default=''}</p>
|
||||
</div>
|
||||
<div class="product-container">
|
||||
{assign name="hc_first_section_lf" value=":array_shift($data.home_charger)" /}
|
||||
{notempty name="hc_first_section_lf"}
|
||||
<a class="product-left" href="{$hc_first_section_lf.link}">
|
||||
<img src="{$hc_first_section_lf.image}" alt="{$hc_first_section_lf.title}" class="product-img">
|
||||
<!-- 公共类+定位类:尺寸统一,定位不同 -->
|
||||
<div class="product-img-hover product-img-1">
|
||||
<img src="{$hc_first_section_lf.extra_image}" alt="{$hc_first_section_lf.short_title}">
|
||||
</div>
|
||||
</a>
|
||||
{/notempty}
|
||||
{assign name="hc_first_section_lr" value=":array_shift($data.home_charger)" /}
|
||||
{notempty name="hc_first_section_lr"}
|
||||
<div class="product-right">
|
||||
<img src="{$hc_first_section_lr.image}" alt="{$hc_first_section_lr.title}" class="right-content right-img">
|
||||
<video src="{$hc_first_section_lr.video}" class="right-content right-video" muted loop playsinline controls>
|
||||
您的浏览器不支持HTML5视频播放,请升级浏览器
|
||||
</video>
|
||||
</div>
|
||||
{/notempty}
|
||||
</div>
|
||||
{assign name="hc_second_section" value=":array_splice($data.home_charger, 0, 4)" /}
|
||||
{notempty name="hc_second_section"}
|
||||
<div class="product-card-box">
|
||||
<div class="product-card-container">
|
||||
{volist name="hc_second_section" id="hcs"}
|
||||
<a class="product-card-wrap" href="{$hcs.link}">
|
||||
<div class="product-card" href="#">
|
||||
<div class="product-card-img">
|
||||
<img src="{$hcs.image}" alt="{$hcs.short_title}">
|
||||
</div>
|
||||
<div class="product-card-text">
|
||||
<div class="product-card-title">{$hcs.title}</div>
|
||||
<div class="product-card-desc">{$hcs.short_title}</div>
|
||||
</div>
|
||||
<div class="product-card-link">
|
||||
<img src="__IMAGES__/ljgd.png" alt="查看更多">
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
{/volist}
|
||||
</div>
|
||||
</div>
|
||||
{/notempty}
|
||||
{assign name="hc_three_section" value=":array_shift($data.home_charger)" /}
|
||||
{notempty name="hc_three_section"}
|
||||
<a href="{$hc_three_section.link}" class="more">
|
||||
<div class="more-img">
|
||||
{$hc_three_section.title}
|
||||
</div>
|
||||
</a>
|
||||
{/notempty}
|
||||
</div>
|
||||
{/notempty}
|
||||
<!-- 产品 桌面充(悬浮图上右超出)底部列表样式不一样(左文右图) -->
|
||||
<div class="product-box">
|
||||
{assign name="dc_title" value=":array_shift($data.desktop_charger)" /}
|
||||
<div class="product-title">
|
||||
<h2 class="product-title-h2">{$dc_title.title|default=''}</h2>
|
||||
<p class="product-title-p">{$dc_title.short_title|default=''}</p>
|
||||
</div>
|
||||
<div class="product-container">
|
||||
{assign name="dc_first_section_lf" value=":array_shift($data.desktop_charger)" /}
|
||||
{notempty name="dc_first_section_lf"}
|
||||
<a class="product-left" href="{$dc_first_section_lf.link}">
|
||||
<img src="{$dc_first_section_lf.image}" alt="{$dc_first_section_lf.short_title}" class="product-img">
|
||||
<!-- 公共类+定位类:尺寸和第一个完全一致,仅定位不同 -->
|
||||
<div class="product-img-hover product-img-2" >
|
||||
<img src="{$dc_first_section_lf.extra_image}" alt="{$dc_first_section_lf.short_title}">
|
||||
</div>
|
||||
</a>
|
||||
{/notempty}
|
||||
{assign name="dc_first_section_lr" value=":array_shift($data.desktop_charger)" /}
|
||||
{notempty name="dc_first_section_lr"}
|
||||
<div class="product-right">
|
||||
<img src="{$dc_first_section_lr.image}"
|
||||
alt="使用场景" class="right-content right-img">
|
||||
<!--muted loop playsinline controls-->
|
||||
<video
|
||||
src="{$dc_first_section_lr.video}"
|
||||
class="right-content right-video" muted loop playsinline controls>
|
||||
您的浏览器不支持HTML5视频播放,请升级浏览器
|
||||
</video>
|
||||
</div>
|
||||
{/notempty}
|
||||
|
||||
</div>
|
||||
{assign name="dc_second_section" value=":array_splice($data.desktop_charger, 0, 2)" /}
|
||||
{notempty name="dc_second_section"}
|
||||
<div class="product-card-box">
|
||||
<div class="product-card-container2">
|
||||
{volist name="dc_second_section" id="dcs"}
|
||||
<a class="product-card2" href="{$dcs.link}">
|
||||
<div class="product-text2">
|
||||
<!-- 新增内部容器,确保所有内容左对齐一致性 -->
|
||||
<div class="product-text-content2">
|
||||
<div class="product-card-title2">{$dcs.title}</div> <!-- 测试超出一行省略 -->
|
||||
<div class="product-card-desc2">{$dcs.short_title}</div> <!-- 测试超出2行省略 -->
|
||||
<div class="product-card-link2">
|
||||
<img src="__IMAGES__/ljgd.png" alt="了解更多">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="product-card-img2">
|
||||
<img src="{$dcs.image}" alt="{$dcs.title}">
|
||||
</div>
|
||||
</a>
|
||||
{/volist}
|
||||
</div>
|
||||
</div>
|
||||
{/notempty}
|
||||
{assign name="dc_three_section" value=":array_shift($data.desktop_charger)" /}
|
||||
{notempty name="dc_three_section"}
|
||||
<a href="{$dc_three_section.link}" class="more">
|
||||
<div class="more-img">
|
||||
{$dc_three_section.title}
|
||||
</div>
|
||||
</a>
|
||||
{/notempty}
|
||||
</div>
|
||||
<!-- 墙插 -->
|
||||
{notempty name="data.wall_charger"}
|
||||
<div class="product-box">
|
||||
{assign name="wc_title" value=":array_shift($data.wall_charger)" /}
|
||||
<div class="product-title">
|
||||
<h2 class="product-title-h2">{$wc_title.title|default=''}</h2>
|
||||
<p class="product-title-p">{$wc_title.short_title|default=''}</p>
|
||||
</div>
|
||||
<div class="product-container">
|
||||
{assign name="wc_first_section_lf" value=":array_shift($data.wall_charger)" /}
|
||||
{notempty name="wc_first_section_lf"}
|
||||
<a class="product-left" href="{$wc_first_section_lf.link}">
|
||||
<img src="{$wc_first_section_lf.image}" alt="{$wc_first_section_lf.title}" class="product-img">
|
||||
<!-- 公共类+定位类:尺寸统一,定位不同 -->
|
||||
<div class="product-img-hover product-img-1">
|
||||
<img src="{$wc_first_section_lf.extra_image}" alt="{$wc_first_section_lf.title}">
|
||||
</div>
|
||||
</a>
|
||||
{/notempty}
|
||||
{assign name="wc_first_section_lr" value=":array_shift($data.wall_charger)" /}
|
||||
{notempty name="wc_first_section_lr"}
|
||||
<div class="product-right">
|
||||
<img src="{$wc_first_section_lr.image}" alt="{$wc_first_section_lr.title}" class="right-content right-img">
|
||||
<video src="{$wc_first_section_lr.video}" class="right-content right-video" muted loop playsinline controls>
|
||||
您的浏览器不支持HTML5视频播放,请升级浏览器
|
||||
</video>
|
||||
</div>
|
||||
{/notempty}
|
||||
</div>
|
||||
{assign name="wc_more_section" value=":array_shift($data.wall_charger)" /}
|
||||
{notempty name="wc_more_section"}
|
||||
<a href="{$wc_more_section.link}" class="more">
|
||||
<div class="more-img">
|
||||
{$wc_more_section.title}
|
||||
</div>
|
||||
</a>
|
||||
{/notempty}
|
||||
</div>
|
||||
{/notempty}
|
||||
{notempty name="data.converter"}
|
||||
<!-- 转换器 -->
|
||||
<div class="product-box">
|
||||
{assign name="ct_title" value=":array_shift($data.converter)" /}
|
||||
<div class="product-title">
|
||||
<h2 class="product-title-h2">{$ct_title.title|default=''}</h2>
|
||||
<p class="product-title-p">{$ct_title.short_title|default=''}</p>
|
||||
</div>
|
||||
{assign name="ct_more_section" value=":array_pop($data.converter)" /}
|
||||
{assign name="ct_chunk_section" value=":array_chunk($data.converter, 2)" /}
|
||||
{assign name="ct_chunk_section_len" value=":count($ct_chunk_section)" /}
|
||||
{volist name="ct_chunk_section" id="cts" key="k"}
|
||||
<div class="product-container">
|
||||
{assign name="cts_lf" value=":array_shift($cts)" /}
|
||||
{notempty name="cts_lf"}
|
||||
<a class="product-left" href="{$cts_lf.link}">
|
||||
<img src="{$cts_lf.image}" alt="{$cts_lf.title}" class="product-img">
|
||||
<!-- 公共类+定位类:尺寸统一,定位不同 -->
|
||||
<!--style="display:flex;justify-content: center;"-->
|
||||
<div class="product-img-hover product-img-1" >
|
||||
<!-- style="width:70%"-->
|
||||
<img src="{$cts_lf.extra_image}" alt="{$cts_lf.title}">
|
||||
</div>
|
||||
</a>
|
||||
{/notempty}
|
||||
{assign name="cts_lr" value=":array_shift($cts)" /}
|
||||
{notempty name="cts_lr"}
|
||||
<div class="product-right">
|
||||
<img src="{$cts_lr.image}" alt="{$cts_lr.title}" class="right-content right-img">
|
||||
<video src="{$cts_lr.video}" class="right-content right-video" muted loop playsinline controls>
|
||||
您的浏览器不支持HTML5视频播放,请升级浏览器
|
||||
</video>
|
||||
</div>
|
||||
{/notempty}
|
||||
</div>
|
||||
{neq name="k" value="$ct_chunk_section_len"}
|
||||
<div class="line"></div>
|
||||
{/neq}
|
||||
{/volist}
|
||||
{notempty name="ct_more_section"}
|
||||
<a href="{$ct_more_section.link}" class="more" style="padding: clamp(1.5rem, 3vw, 3rem) 0">
|
||||
<div class="more-img">
|
||||
{$ct_more_section.title}
|
||||
</div>
|
||||
</a>
|
||||
{/notempty}
|
||||
</div>
|
||||
{/notempty}
|
||||
{notempty name="data.footer_info"}
|
||||
<!-- 底部 -->
|
||||
<div class="prodline-footer-box">
|
||||
<div class="prodline-footer-box-img">
|
||||
<img src="{$data.footer_info.0.image}" alt="">
|
||||
</div>
|
||||
</div>
|
||||
{/notempty}
|
||||
<!-- 蒙版 -->
|
||||
<div class="mask" id="mask">
|
||||
<div class="mask-content" >
|
||||
<span class="close-btn">×</span>
|
||||
<div class="mask-scroll-content"></div>
|
||||
</div>
|
||||
</div>
|
||||
{/block}
|
||||
{block name="script"}
|
||||
<script type="text/javascript">
|
||||
let swiper=null;
|
||||
const advantageItems = document.querySelectorAll('.advantage-card');
|
||||
let scrollTop = 0; // 保存页面滚动位置
|
||||
let closeBtnHtml = null; // 关闭按钮元素(全局变量,避免重复创建)
|
||||
const mask = document.getElementById('mask');
|
||||
const maskContent = document.querySelector('.mask-content');
|
||||
const maskScrollContent = document.querySelector('.mask-scroll-content'); // 滚动容器(关键!)
|
||||
const closeBtn = document.querySelector('.close-btn')
|
||||
// 初始化:确保 maskScrollContent 存在于 maskContent 中(避免被清空)
|
||||
if (!maskScrollContent) {
|
||||
// 如果页面没有 mask-scroll-content,动态创建(确保结构稳定)
|
||||
const scrollContent = document.createElement('div');
|
||||
scrollContent.className = 'mask-scroll-content';
|
||||
maskContent.appendChild(scrollContent);
|
||||
}
|
||||
|
||||
|
||||
function createCloseBtn() {
|
||||
if (closeBtnHtml) {
|
||||
closeBtnHtml.remove();
|
||||
}
|
||||
|
||||
closeBtnHtml = document.createElement('span');
|
||||
closeBtnHtml.className = 'close-btn';
|
||||
closeBtnHtml.innerHTML = '×';
|
||||
|
||||
closeBtnHtml.addEventListener('click', hideMask);
|
||||
|
||||
// 挂载到 maskContent(而非 scrollContent),避免被滚动影响位置
|
||||
maskContent.prepend(closeBtnHtml);
|
||||
}
|
||||
|
||||
function showMask(contentHtml) {
|
||||
// 保存页面滚动位置
|
||||
scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
|
||||
|
||||
// 关键:将内容填充到 scrollContent 中(而非直接替换 maskContent)
|
||||
maskScrollContent.innerHTML = contentHtml;
|
||||
createCloseBtn();
|
||||
|
||||
// 显示蒙版
|
||||
mask.style.display = 'flex';
|
||||
|
||||
// 禁止滚动(复用你的逻辑)
|
||||
document.documentElement.classList.add('no-scroll');
|
||||
document.body.classList.add('no-scroll');
|
||||
document.body.style.top = `-${scrollTop}px`;
|
||||
|
||||
// 额外:打开蒙版时就重置滚动位置(避免残留上次滚动状态)
|
||||
maskScrollContent.scrollTop = 0;
|
||||
}
|
||||
|
||||
function hideMask() {
|
||||
// 关键步骤 1:先重置 scrollContent 的滚动位置(此时元素还未被销毁)
|
||||
maskScrollContent.scrollTop = 0;
|
||||
|
||||
// 关键步骤 2:清空 scrollContent 的内容(而非 maskContent)
|
||||
maskScrollContent.innerHTML = "";
|
||||
|
||||
// 隐藏蒙版
|
||||
mask.style.display = 'none';
|
||||
|
||||
// 恢复滚动(复用你的逻辑)
|
||||
document.documentElement.classList.remove('no-scroll');
|
||||
document.body.classList.remove('no-scroll');
|
||||
document.body.style.top = '';
|
||||
|
||||
// 还原页面滚动位置
|
||||
window.scrollTo(0, scrollTop);
|
||||
|
||||
// 移除关闭按钮(可选,避免残留)
|
||||
if (closeBtnHtml) {
|
||||
closeBtnHtml.remove();
|
||||
closeBtnHtml = null;
|
||||
}
|
||||
}
|
||||
// 点击卡片显示详情
|
||||
advantageItems.forEach((item) => {
|
||||
item.addEventListener('click', (e) => {
|
||||
// 获取当前点击卡片内的.mack-conten-text元素
|
||||
const currentMackContent = e.currentTarget.querySelector('.mack-conten-text');
|
||||
if (currentMackContent) {
|
||||
// 关键修改:获取该元素的子内容(innerHTML 本身就是内部HTML,不含当前元素标签)
|
||||
// 若想更彻底,可遍历子节点拼接内容(兼容特殊场景)
|
||||
let contentHtml = '';
|
||||
Array.from(currentMackContent.childNodes).forEach(child => {
|
||||
// 只保留元素节点和文本节点(过滤空节点)
|
||||
if (child.nodeType === 1 || child.nodeType === 3) {
|
||||
contentHtml += child.outerHTML || child.textContent;
|
||||
}
|
||||
});
|
||||
// 显示蒙版并传入纯净的子内容
|
||||
showMask(contentHtml);
|
||||
}
|
||||
});
|
||||
});
|
||||
// 关闭按钮事件
|
||||
closeBtn.addEventListener('click', hideMask);
|
||||
// 点击蒙版背景关闭(可选)
|
||||
mask.addEventListener('click', (e) => {
|
||||
if (e.target === mask) hideMask();
|
||||
});
|
||||
|
||||
// ESC 键关闭(可选)
|
||||
document.addEventListener('keydown', (e) => {
|
||||
if (e.key === 'Escape' && mask.style.display === 'flex') hideMask();
|
||||
});
|
||||
|
||||
// 关键:拦截蒙版的 touchmove 事件,阻止滚动穿透(移动端核心)
|
||||
mask.addEventListener(
|
||||
'touchmove',
|
||||
(e) => {
|
||||
// 只有点击蒙版背景(不是内容区域)才阻止滚动
|
||||
if (e.target === mask) {
|
||||
e.preventDefault(); // 阻止默认触摸滚动行为
|
||||
e.stopPropagation(); // 阻止事件冒泡
|
||||
}
|
||||
},
|
||||
{ passive: false }
|
||||
); // passive: false 必须,否则 preventDefault 无效
|
||||
|
||||
const allVideos = document.querySelectorAll('.right-video');
|
||||
// 停止所有视频播放
|
||||
function stopAllVideos() {
|
||||
allVideos.forEach((video) => {
|
||||
video.pause();
|
||||
video.style.display = 'none';
|
||||
// 显示对应图片
|
||||
const img = video.parentElement.querySelector('.right-img');
|
||||
if (img) img.style.display = 'block';
|
||||
});
|
||||
}
|
||||
|
||||
// 滚动切换图片/视频(核心逻辑)
|
||||
window.addEventListener('scroll', function () {
|
||||
const productRights = document.querySelectorAll('.product-right');
|
||||
let activeVideo = null;
|
||||
// 找出当前在视口中的视频容器
|
||||
productRights.forEach((rightContainer) => {
|
||||
const img = rightContainer.querySelector('.right-img');
|
||||
const video = rightContainer.querySelector('.right-video');
|
||||
const videoSrc = video.src.trim()
|
||||
if (!img || !video) return;
|
||||
if(!videoSrc) return;
|
||||
const rect = rightContainer.getBoundingClientRect();
|
||||
// 视口判断:容器进入视口50%以上视为活跃
|
||||
const isInView =
|
||||
rect.top < window.innerHeight * 0.7 &&
|
||||
rect.bottom > window.innerHeight * 0.3;
|
||||
|
||||
if (isInView) {
|
||||
activeVideo = video;
|
||||
}
|
||||
});
|
||||
|
||||
// 处理活跃视频
|
||||
if (activeVideo) {
|
||||
stopAllVideos(); // 先停止其他视频
|
||||
const img = activeVideo.parentElement.querySelector('.right-img');
|
||||
img.style.display = 'none';
|
||||
activeVideo.style.display = 'block';
|
||||
|
||||
// 自动播放(兼容原生控制栏,用户手动暂停后不会强制播放)
|
||||
if (activeVideo.paused) {
|
||||
activeVideo.play().catch((err) => {
|
||||
console.log('视频播放失败(浏览器限制):', err);
|
||||
// 播放失败时回退到图片
|
||||
activeVideo.style.display = 'none';
|
||||
img.style.display = 'block';
|
||||
});
|
||||
}
|
||||
} else {
|
||||
stopAllVideos(); // 无活跃视频时停止所有播放
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
window.onload = function () {
|
||||
if (typeof Swiper === 'undefined') {
|
||||
console.error('Swiper加载失败,请刷新页面重试');
|
||||
return;
|
||||
}
|
||||
|
||||
swiper = new Swiper('.auto-swiper-container', {
|
||||
autoplay: {
|
||||
delay: 3000, // 3秒切换
|
||||
disableOnInteraction: false,
|
||||
},
|
||||
loop: false,
|
||||
slidesPerView: 1,
|
||||
spaceBetween: 0,
|
||||
// 启用分页指示标(核心配置)
|
||||
pagination: {
|
||||
el: '.swiper-pagination', // 对应 HTML 中的指示标容器
|
||||
clickable: true, // 允许点击指示标切换
|
||||
// dynamicBullets: true, // 动态指示标(当前激活放大)
|
||||
//dynamicMainBullets: 3, // 动态模式显示3个核心指示标
|
||||
},
|
||||
navigation: false,
|
||||
scrollbar: false,
|
||||
on: {
|
||||
resize: function () {
|
||||
this.update();
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
window.addEventListener('resize', function () {
|
||||
swiper.update();
|
||||
});
|
||||
|
||||
// 初始化时触发滚动事件,确保状态正确
|
||||
window.dispatchEvent(new Event('scroll'));
|
||||
};
|
||||
</script>
|
||||
{/block}
|
||||
@@ -32,6 +32,8 @@ class CreateSysBannerItem extends Migrator
|
||||
$table->addColumn('banner_id', 'integer', ['null' => false, 'comment' => '所属Banner ID'])
|
||||
->addColumn('title', 'string', ['limit' => 256, 'null' => false, 'comment' => '标题'])
|
||||
->addColumn('title_txt_color', 'string', ['limit' => 7, 'null' => false, 'default' => '', 'comment' => '标题文本颜色'])
|
||||
->addColumn('short_title', 'string', ['limit' => 255, 'null' => true, 'comment' => 'banner简称'])
|
||||
->addColumn('short_title_txt_color', 'string', ['limit' => 7, 'null' => true, 'comment' => 'banner简称文本颜色'])
|
||||
->addColumn('desc', MysqlAdapter::PHINX_TYPE_TEXT, ['null' => true, 'default' => null, 'comment' => '描述'])
|
||||
->addColumn('desc_txt_color', 'string', ['limit' => 7, 'null' => false, 'default' => '', 'comment' => '描述文本颜色'])
|
||||
->addColumn('type', 'string', ['limit' => 16, 'null' => false, 'comment' => '类型: image为图片, video为视频'])
|
||||
|
||||
@@ -73,8 +73,8 @@ class SysConfigInit extends Seeder
|
||||
["id" => 56, "group_id" => 12, "title" => "Instagram URL新窗口打开", "name" => "article_share_to_instagram.is_blank", "value" => "1", "extra" => "1:是\n0:否", "type" => "radio", "sort" => 6, "remark" => "", "created_at" => "2025-04-23 17:49:12", "updated_at" => "2025-06-12 09:55:21", "deleted_at" => null],
|
||||
["id" => 57, "group_id" => 12, "title" => "Twitter URL新窗口打开", "name" => "article_share_to_twitter.is_blank", "value" => "1", "extra" => "1:是\n0:否", "type" => "radio", "sort" => 9, "remark" => "", "created_at" => "2025-04-23 17:49:12", "updated_at" => "2025-06-12 09:55:21", "deleted_at" => null],
|
||||
["id" => 58, "group_id" => 12, "title" => "Reddit URL新窗口打开", "name" => "article_share_to_reddit.is_blank", "value" => "1", "extra" => "1:是\n0:否", "type" => "radio", "sort" => 12, "remark" => "", "created_at" => "2025-04-23 17:49:12", "updated_at" => "2025-06-12 09:55:21", "deleted_at" => null],
|
||||
["id" => 59, "group_id" => 1, "title" => "产品询盘可选国家", "name" => "optional_country_for_product_inquiry", "value" => "Afghanistan\nAlbania\nAlgeria\nAmerican Samoa\nAndorra\nAngola\nAnguilla\nAntigua and Barbuda\nArgentina\nArmenia\nAruba\nAustralia\nAustria\nAzerbaijan\nAzores\nBahamas\nBahrain\nBangladesh\nBarbados\nBelarus\nBelgium\nBelize\nBenin\nBermuda\nBhutan\nBolivia\nBosnia and Herzegovina\nBotswana\nBrazil\nBrunei\nBulgaria\nBurkina Faso\nBurundi\nCambodia\nCameroon\nCanada\nCanarias\nCape Verde\nCayman\nCentral African Republic\nChad\nChile\nChina\nColombia\nComoros\nCongo (Congo-Kinshasa)\nCongo\nCook Islands\nCosta Rica\nCote D'Ivoire\nCroatia\nCuba\nCyprus\nCzech\nDenmark\nDjibouti\nDominica\nDominican\nEcuador\nEgypt\nEl Salvador\nEquatorial Guinea\nEritrea\nEstonia\nEthiopia\nFiji\nFinland\nFrance\nFrench Guiana\nFrench Polynesia\nGabon\nGambia\nGeorgia\nGermany\nGhana\nGreece\nGreenland\nGrenada\nGuadeloupe\nGuam\nGuatemala\nGuinea\nGuinea-Bissau\nGuyana\nHaiti\nHonduras\nHungary\nIceland\nIndia\nIndonesia\nIran\nIraq\nIreland\nIsrael\nItaly\nJamaica\nJapan\nJordan\nKazakhstan\nKenya\nKiribati\nKorea (North)\nKorea (South)\nKuwait\nKyrgyzstan\nLaos\nLatvia\nLebanon\nLesotho\nLiberia\nLibya\nLiechtenstein\nLithuania\nLuxembourg\nMacedonia\nMadagascar\nMadeira\nMalawi\nMalaysia\nMaldives\nMali\nMalta\nMarshall Islands\nMartinique\nMauritania\nMauritius\nMexico\nMicronesia\nMoldova\nMonaco\nMongolia\nMontserrat\nMorocco\nMozambique\nMyanmar\nNamibia\nNauru\nNepal\nNetherlands Antilles\nNetherlands\nNew Caledonia\nNew Zealand\nNicaragua\nNiger\nNiue\nNorthern Mariana\nNorway\nOman\nPakistan\nPalau\nPalestine\nPanama\nPapua New Guinea\nParaguay\nPeru\nPhilippines\nPitcairn Islands\nPoland\nPortugal\nPuerto Rico\nQatar\nReunion\nRomania\nRussian Federation\nRwanda\nSaint Helena\nSaint Kitts-Nevis\nSaint Lucia\nSaint Vincent and the Grenadines\nSamoa\nSan Marino\nSao Tome and Principe\nSaudi Arabia\nSenegal\nSerbia\nSeychelles\nSierra Leone\nSingapore\nSlovakia\nSlovenia\nSolomon Islands\nSomalia\nSouth Africa\nSpain\nSri Lanka\nSudan\nSuriname\nSwaziland\nSweden\nSwitzerland\nSyria\nTajikistan\nTanzania\nThailand\nThe British Virgin Islands\nThe United States Virgin Islands\nTimor-Leste\nTogo\nTokelau\nTonga\nTrinidad and Tobago\nTunisia\nTurkey\nTurkmenistan\nTurks and Caicos Islands\nTuvalu\nUganda\nUkraine\nUnited Arab Emirates\nUnited Kingdom\nUnited States\nUruguay\nUzbekistan\nVanuatu\nVatican City\nVenezuela\nVietnam\nWallis and Futuna\nWestern Sahara\nYemen\nZambia\nZimbabwe", "extra" => "", "type" => "textarea", "sort" => 7, "remark" => "", "created_at" => "2025-04-27 11:10:22", "updated_at" => "2025-06-11 17:09:13", "deleted_at" => null],
|
||||
["id" => 60, "group_id" => 4, "title" => "产品询盘可选国家", "name" => "optional_country_for_product_inquiry", "value" => "Afghanistan\nAlbania\nAlgeria\nAmerican Samoa\nAndorra\nAngola\nAnguilla\nAntigua and Barbuda\nArgentina\nArmenia\nAruba\nAustralia\nAustria\nAzerbaijan\nAzores\nBahamas\nBahrain\nBangladesh\nBarbados\nBelarus\nBelgium\nBelize\nBenin\nBermuda\nBhutan\nBolivia\nBosnia and Herzegovina\nBotswana\nBrazil\nBrunei\nBulgaria\nBurkina Faso\nBurundi\nCambodia\nCameroon\nCanada\nCanarias\nCape Verde\nCayman\nCentral African Republic\nChad\nChile\nChina\nColombia\nComoros\nCongo (Congo-Kinshasa)\nCongo\nCook Islands\nCosta Rica\nCote D'Ivoire\nCroatia\nCuba\nCyprus\nCzech\nDenmark\nDjibouti\nDominica\nDominican\nEcuador\nEgypt\nEl Salvador\nEquatorial Guinea\nEritrea\nEstonia\nEthiopia\nFiji\nFinland\nFrance\nFrench Guiana\nFrench Polynesia\nGabon\nGambia\nGeorgia\nGermany\nGhana\nGreece\nGreenland\nGrenada\nGuadeloupe\nGuam\nGuatemala\nGuinea\nGuinea-Bissau\nGuyana\nHaiti\nHonduras\nHungary\nIceland\nIndia\nIndonesia\nIran\nIraq\nIreland\nIsrael\nItaly\nJamaica\nJapan\nJordan\nKazakhstan\nKenya\nKiribati\nKorea (North)\nKorea (South)\nKuwait\nKyrgyzstan\nLaos\nLatvia\nLebanon\nLesotho\nLiberia\nLibya\nLiechtenstein\nLithuania\nLuxembourg\nMacedonia\nMadagascar\nMadeira\nMalawi\nMalaysia\nMaldives\nMali\nMalta\nMarshall Islands\nMartinique\nMauritania\nMauritius\nMexico\nMicronesia\nMoldova\nMonaco\nMongolia\nMontserrat\nMorocco\nMozambique\nMyanmar\nNamibia\nNauru\nNepal\nNetherlands Antilles\nNetherlands\nNew Caledonia\nNew Zealand\nNicaragua\nNiger\nNiue\nNorthern Mariana\nNorway\nOman\nPakistan\nPalau\nPalestine\nPanama\nPapua New Guinea\nParaguay\nPeru\nPhilippines\nPitcairn Islands\nPoland\nPortugal\nPuerto Rico\nQatar\nReunion\nRomania\nRussian Federation\nRwanda\nSaint Helena\nSaint Kitts-Nevis\nSaint Lucia\nSaint Vincent and the Grenadines\nSamoa\nSan Marino\nSao Tome and Principe\nSaudi Arabia\nSenegal\nSerbia\nSeychelles\nSierra Leone\nSingapore\nSlovakia\nSlovenia\nSolomon Islands\nSomalia\nSouth Africa\nSpain\nSri Lanka\nSudan\nSuriname\nSwaziland\nSweden\nSwitzerland\nSyria\nTajikistan\nTanzania\nThailand\nThe British Virgin Islands\nThe United States Virgin Islands\nTimor-Leste\nTogo\nTokelau\nTonga\nTrinidad and Tobago\nTunisia\nTurkey\nTurkmenistan\nTurks and Caicos Islands\nTuvalu\nUganda\nUkraine\nUnited Arab Emirates\nUnited Kingdom\nUnited States\nUruguay\nUzbekistan\nVanuatu\nVatican City\nVenezuela\nVietnam\nWallis and Futuna\nWestern Sahara\nYemen\nZambia\nZimbabwe", "extra" => null, "type" => "textarea", "sort" => 7, "remark" => null, "created_at" => "2025-04-27 11:23:25", "updated_at" => "2025-06-12 09:55:21", "deleted_at" => null],
|
||||
["id" => 59, "group_id" => 1, "title" => "产品询盘可选国家", "name" => "optional_country_for_product_inquiry", "value" => "Afghanistan\nAlbania\nAlgeria\nAmerican Samoa\nAndorra\nAngola\nAnguilla\nAntigua and Barbuda\nArgentina\nArmenia\nAruba\nAustralia\nAustria\nAzerbaijan\nAzores\nBahamas\nBahrain\nBangladesh\nBarbados\nBelarus\nBelgium\nBelize\nBenin\nBermuda\nBhutan\nBolivia\nBosnia and Herzegovina\nBotswana\nBrazil\nBrunei\nBulgaria\nBurkina Faso\nBurundi\nCambodia\nCameroon\nCanada\nCanarias\nCape Verde\nCayman\nCentral African Republic\nChad\nChile\nChina\nColombia\nComoros\nCongo (Congo-Kinshasa)\nCongo\nCook Islands\nCosta Rica\nCote D'Ivoire\nCroatia\nCuba\nCyprus\nCzech\nDenmark\nDjibouti\nDominica\nDominican\nEcuador\nEgypt\nEl Salvador\nEquatorial Guinea\nEritrea\nEstonia\nEthiopia\nFiji\nFinland\nFrance\nFrench Guiana\nFrench Polynesia\nGabon\nGambia\nGeorgia\nGermany\nGhana\nGreece\nGreenland\nGrenada\nGuadeloupe\nGuam\nGuatemala\nGuinea\nGuinea-Bissau\nGuyana\nHaiti\nHonduras\nHungary\nIceland\nIndia\nIndonesia\nIran\nIraq\nIreland\nIsrael\nItaly\nJamaica\nJapan\nJordan\nKazakhstan\nKenya\nKiribati\nKorea (North)\nKorea (South)\nKuwait\nKyrgyzstan\nLaos\nLatvia\nLebanon\nLesotho\nLiberia\nLibya\nLiechtenstein\nLithuania\nLuxembourg\nMacedonia\nMadagascar\nMadeira\nMalawi\nMalaysia\nMaldives\nMali\nMalta\nMarshall Islands\nMartinique\nMauritania\nMauritius\nMexico\nMicronesia\nMoldova\nMonaco\nMongolia\nHarmonyOS\nMorocco\nMozambique\nMyanmar\nNamibia\nNauru\nNepal\nNetherlands Antilles\nNetherlands\nNew Caledonia\nNew Zealand\nNicaragua\nNiger\nNiue\nNorthern Mariana\nNorway\nOman\nPakistan\nPalau\nPalestine\nPanama\nPapua New Guinea\nParaguay\nPeru\nPhilippines\nPitcairn Islands\nPoland\nPortugal\nPuerto Rico\nQatar\nReunion\nRomania\nRussian Federation\nRwanda\nSaint Helena\nSaint Kitts-Nevis\nSaint Lucia\nSaint Vincent and the Grenadines\nSamoa\nSan Marino\nSao Tome and Principe\nSaudi Arabia\nSenegal\nSerbia\nSeychelles\nSierra Leone\nSingapore\nSlovakia\nSlovenia\nSolomon Islands\nSomalia\nSouth Africa\nSpain\nSri Lanka\nSudan\nSuriname\nSwaziland\nSweden\nSwitzerland\nSyria\nTajikistan\nTanzania\nThailand\nThe British Virgin Islands\nThe United States Virgin Islands\nTimor-Leste\nTogo\nTokelau\nTonga\nTrinidad and Tobago\nTunisia\nTurkey\nTurkmenistan\nTurks and Caicos Islands\nTuvalu\nUganda\nUkraine\nUnited Arab Emirates\nUnited Kingdom\nUnited States\nUruguay\nUzbekistan\nVanuatu\nVatican City\nVenezuela\nVietnam\nWallis and Futuna\nWestern Sahara\nYemen\nZambia\nZimbabwe", "extra" => "", "type" => "textarea", "sort" => 7, "remark" => "", "created_at" => "2025-04-27 11:10:22", "updated_at" => "2025-06-11 17:09:13", "deleted_at" => null],
|
||||
["id" => 60, "group_id" => 4, "title" => "产品询盘可选国家", "name" => "optional_country_for_product_inquiry", "value" => "Afghanistan\nAlbania\nAlgeria\nAmerican Samoa\nAndorra\nAngola\nAnguilla\nAntigua and Barbuda\nArgentina\nArmenia\nAruba\nAustralia\nAustria\nAzerbaijan\nAzores\nBahamas\nBahrain\nBangladesh\nBarbados\nBelarus\nBelgium\nBelize\nBenin\nBermuda\nBhutan\nBolivia\nBosnia and Herzegovina\nBotswana\nBrazil\nBrunei\nBulgaria\nBurkina Faso\nBurundi\nCambodia\nCameroon\nCanada\nCanarias\nCape Verde\nCayman\nCentral African Republic\nChad\nChile\nChina\nColombia\nComoros\nCongo (Congo-Kinshasa)\nCongo\nCook Islands\nCosta Rica\nCote D'Ivoire\nCroatia\nCuba\nCyprus\nCzech\nDenmark\nDjibouti\nDominica\nDominican\nEcuador\nEgypt\nEl Salvador\nEquatorial Guinea\nEritrea\nEstonia\nEthiopia\nFiji\nFinland\nFrance\nFrench Guiana\nFrench Polynesia\nGabon\nGambia\nGeorgia\nGermany\nGhana\nGreece\nGreenland\nGrenada\nGuadeloupe\nGuam\nGuatemala\nGuinea\nGuinea-Bissau\nGuyana\nHaiti\nHonduras\nHungary\nIceland\nIndia\nIndonesia\nIran\nIraq\nIreland\nIsrael\nItaly\nJamaica\nJapan\nJordan\nKazakhstan\nKenya\nKiribati\nKorea (North)\nKorea (South)\nKuwait\nKyrgyzstan\nLaos\nLatvia\nLebanon\nLesotho\nLiberia\nLibya\nLiechtenstein\nLithuania\nLuxembourg\nMacedonia\nMadagascar\nMadeira\nMalawi\nMalaysia\nMaldives\nMali\nMalta\nMarshall Islands\nMartinique\nMauritania\nMauritius\nMexico\nMicronesia\nMoldova\nMonaco\nMongolia\nHarmonyOS\nMorocco\nMozambique\nMyanmar\nNamibia\nNauru\nNepal\nNetherlands Antilles\nNetherlands\nNew Caledonia\nNew Zealand\nNicaragua\nNiger\nNiue\nNorthern Mariana\nNorway\nOman\nPakistan\nPalau\nPalestine\nPanama\nPapua New Guinea\nParaguay\nPeru\nPhilippines\nPitcairn Islands\nPoland\nPortugal\nPuerto Rico\nQatar\nReunion\nRomania\nRussian Federation\nRwanda\nSaint Helena\nSaint Kitts-Nevis\nSaint Lucia\nSaint Vincent and the Grenadines\nSamoa\nSan Marino\nSao Tome and Principe\nSaudi Arabia\nSenegal\nSerbia\nSeychelles\nSierra Leone\nSingapore\nSlovakia\nSlovenia\nSolomon Islands\nSomalia\nSouth Africa\nSpain\nSri Lanka\nSudan\nSuriname\nSwaziland\nSweden\nSwitzerland\nSyria\nTajikistan\nTanzania\nThailand\nThe British Virgin Islands\nThe United States Virgin Islands\nTimor-Leste\nTogo\nTokelau\nTonga\nTrinidad and Tobago\nTunisia\nTurkey\nTurkmenistan\nTurks and Caicos Islands\nTuvalu\nUganda\nUkraine\nUnited Arab Emirates\nUnited Kingdom\nUnited States\nUruguay\nUzbekistan\nVanuatu\nVatican City\nVenezuela\nVietnam\nWallis and Futuna\nWestern Sahara\nYemen\nZambia\nZimbabwe", "extra" => null, "type" => "textarea", "sort" => 7, "remark" => null, "created_at" => "2025-04-27 11:23:25", "updated_at" => "2025-06-12 09:55:21", "deleted_at" => null],
|
||||
["id" => 61, "group_id" => 1, "title" => "导航位置店铺URL", "name" => "navigation_store_url", "value" => "https://oricotechs.com/", "extra" => null, "type" => "text", "sort" => 6, "remark" => null, "created_at" => "2025-05-13 17:45:46", "updated_at" => "2025-06-11 17:09:13", "deleted_at" => null],
|
||||
["id" => 62, "group_id" => 4, "title" => "导航位置店铺URL", "name" => "navigation_store_url", "value" => "https://oricotechs.com/", "extra" => null, "type" => "text", "sort" => 6, "remark" => null, "created_at" => "2025-05-13 17:45:46", "updated_at" => "2025-06-12 09:55:21", "deleted_at" => null],
|
||||
["id" => 63, "group_id" => 7, "title" => "邮箱", "name" => "website_email", "value" => "supports@orico.com.cn", "extra" => null, "type" => "text", "sort" => 1, "remark" => null, "created_at" => "2025-05-23 17:06:53", "updated_at" => "2025-06-11 17:09:13", "deleted_at" => null],
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
<?php
|
||||
|
||||
try {
|
||||
|
||||
$secret_key = 'Aa-1221';
|
||||
|
||||
// check for POST request
|
||||
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
|
||||
throw new \Exception('FAILED - not POST - '. $_SERVER['REQUEST_METHOD']);
|
||||
}
|
||||
|
||||
// get content type
|
||||
$content_type = isset($_SERVER['CONTENT_TYPE']) ? strtolower(trim($_SERVER['CONTENT_TYPE'])) : '';
|
||||
|
||||
if ($content_type != 'application/json') {
|
||||
throw new \Exception('FAILED - not application/json - '. $content_type);
|
||||
}
|
||||
|
||||
// get payload
|
||||
$payload = trim(file_get_contents("php://input"));
|
||||
|
||||
if (empty($payload)) {
|
||||
throw new \Exception('FAILED - no payload');
|
||||
}
|
||||
|
||||
// get header signature
|
||||
$header_signature = isset($_SERVER['HTTP_X_GITEA_SIGNATURE']) ? $_SERVER['HTTP_X_GITEA_SIGNATURE'] : '';
|
||||
|
||||
if (empty($header_signature)) {
|
||||
throw new \Exception('FAILED - header signature missing');
|
||||
}
|
||||
|
||||
// calculate payload signature
|
||||
$payload_signature = hash_hmac('sha256', $payload, $secret_key, false);
|
||||
|
||||
// check payload signature against header signature
|
||||
if ($header_signature !== $payload_signature) {
|
||||
throw new \Exception('FAILED - payload signature');
|
||||
}
|
||||
|
||||
// convert json to array
|
||||
$decoded = json_decode($payload, true);
|
||||
|
||||
// check for json decode errors
|
||||
if (json_last_error() !== JSON_ERROR_NONE) {
|
||||
throw new \Exception('FAILED - json decode - '. json_last_error());
|
||||
}
|
||||
|
||||
exec('git pull origin dev --rebase 2>&1', $result);
|
||||
|
||||
var_export($result);exit;
|
||||
} catch (\Throwable $th) {
|
||||
var_export($th->getMessage());
|
||||
}
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
.iotbt1 {
|
||||
font-size: 18px;
|
||||
font-family: Montserrat-Bold, Montserrat;
|
||||
font-family: HarmonyOS-Bold, HarmonyOS;
|
||||
padding-bottom: 24px;
|
||||
padding-top: 40px;
|
||||
font-weight: 700;
|
||||
@@ -60,7 +60,7 @@
|
||||
|
||||
.iotbtp1 {
|
||||
font-size: 14px;
|
||||
font-family: Montserrat-Bold, Montserrat;
|
||||
font-family: HarmonyOS-Bold, HarmonyOS;
|
||||
font-weight: bold;
|
||||
padding-bottom: 11px;
|
||||
word-break: break-word;
|
||||
@@ -69,7 +69,7 @@
|
||||
.iotbts1 {
|
||||
text-align: center;
|
||||
font-size: 12px;
|
||||
font-family: Montserrat-Medium, Montserrat;
|
||||
font-family: HarmonyOS-Medium, HarmonyOS;
|
||||
color: #9e9e9f;
|
||||
word-break: break-word;
|
||||
}
|
||||
@@ -140,7 +140,7 @@
|
||||
font-size: 14px;
|
||||
padding-top: 12px;
|
||||
text-align: center;
|
||||
font-family: Montserrat-Medium, Montserrat;
|
||||
font-family: HarmonyOS-Medium, HarmonyOS;
|
||||
overflow-wrap: break-word;
|
||||
word-break: break-word;
|
||||
}
|
||||
@@ -152,7 +152,7 @@
|
||||
.sfbt1 {
|
||||
text-align: center;
|
||||
font-size: 18px;
|
||||
font-family: Montserrat-Bold, Montserrat;
|
||||
font-family: HarmonyOS-Bold, HarmonyOS;
|
||||
font-weight: bold;
|
||||
padding-bottom: 24px;
|
||||
padding-top: 24px;
|
||||
@@ -183,7 +183,7 @@
|
||||
.cit {
|
||||
width: 100%;
|
||||
font-size: 14px;
|
||||
font-family: Montserrat-Regular, Montserrat;
|
||||
font-family: HarmonyOS-Regular, HarmonyOS;
|
||||
color: #000;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
@@ -237,7 +237,7 @@
|
||||
.wcu_s1 {
|
||||
color: #000;
|
||||
font: 16px;
|
||||
font-family: Montserrat-Medium, Montserrat;
|
||||
font-family: HarmonyOS-Medium, HarmonyOS;
|
||||
font-weight: 500;
|
||||
padding: 20px 24px;
|
||||
}
|
||||
|
||||
@@ -598,7 +598,7 @@
|
||||
margin: auto;
|
||||
font-size: 1rem;
|
||||
color: #707070;
|
||||
font-family: "Montserrat-Medium";
|
||||
font-family: "HarmonyOS-Medium";
|
||||
}
|
||||
|
||||
.oricoCnLc .gallery-thumbs .swiper-slide-thumb-active {
|
||||
@@ -632,14 +632,14 @@
|
||||
.oricoCnLc .info h5 {
|
||||
font-size: #000;
|
||||
font-size: 1rem;
|
||||
font-family: "Montserrat-Bold";
|
||||
font-family: "HarmonyOS-Bold";
|
||||
padding: 2rem 2rem 0 1rem;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.oricoCnLc .info p {
|
||||
color: #707070;
|
||||
font-family: "Montserrat-Regular";
|
||||
font-family: "HarmonyOS-Regular";
|
||||
padding: 1rem;
|
||||
}
|
||||
|
||||
@@ -651,7 +651,7 @@
|
||||
|
||||
.oricoCnLc .m_ach-b .title {
|
||||
font-size: 1.125rem;
|
||||
font-family: "Montserrat-Bold";
|
||||
font-family: "HarmonyOS-Bold";
|
||||
width: 98%;
|
||||
margin: auto;
|
||||
position: relative;
|
||||
@@ -660,7 +660,7 @@
|
||||
|
||||
.oricoCnLc .m_ach-b .chtitle {
|
||||
font-size: 1.125rem;
|
||||
font-family: "Montserrat-Bold";
|
||||
font-family: "HarmonyOS-Bold";
|
||||
width: 98%;
|
||||
margin: auto;
|
||||
position: relative;
|
||||
@@ -677,7 +677,7 @@
|
||||
|
||||
.oricoCnLc .m_ch-title {
|
||||
font-size: 1rem;
|
||||
font-family: "Montserrat-Bold";
|
||||
font-family: "HarmonyOS-Bold";
|
||||
width: 98%;
|
||||
margin: 1rem auto 0;
|
||||
padding: 1rem 0 0;
|
||||
@@ -690,7 +690,7 @@
|
||||
font-size: 0.875;
|
||||
line-height: 1.5rem;
|
||||
color: #707070;
|
||||
font-family: "Montserrat-Regular";
|
||||
font-family: "HarmonyOS-Regular";
|
||||
width: 98%;
|
||||
margin: 1rem auto;
|
||||
padding: 0;
|
||||
|
||||
@@ -156,7 +156,7 @@
|
||||
border-radius: 8px;
|
||||
height: 48px;
|
||||
box-shadow: none;
|
||||
font-family: Montserrat-Regular, Montserrat;
|
||||
font-family: HarmonyOS-Regular, HarmonyOS;
|
||||
}
|
||||
|
||||
.oricoEGapp-articledetail .content .share_box .comment .comment_form>div input {
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
border-radius: 1rem;
|
||||
background-color: #fff;
|
||||
color: #6b6c6e;
|
||||
font-family: "Montserrat-Medium";
|
||||
font-family: "HarmonyOS-Medium";
|
||||
font-size: 0.875rem;
|
||||
display: inline-block;
|
||||
margin-bottom: 0.5rem;
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
font-size: 18px;
|
||||
color: #004bfa;
|
||||
text-align: left;
|
||||
font-family: Montserrat-Bold, Montserrat;
|
||||
font-family: HarmonyOS-Bold, HarmonyOS;
|
||||
font-weight: 700;
|
||||
margin-top: 0;
|
||||
margin-bottom: 12px;
|
||||
@@ -27,7 +27,7 @@
|
||||
color: #707070;
|
||||
text-align: center;
|
||||
text-align: left;
|
||||
font-family: Montserrat-Medium, Montserrat;
|
||||
font-family: HarmonyOS-Medium, HarmonyOS;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
|
||||
.itlable {
|
||||
font-size: 12.5px;
|
||||
font-family: Montserrat-Medium, Montserrat;
|
||||
font-family: HarmonyOS-Medium, HarmonyOS;
|
||||
color: #000000;
|
||||
font-weight: bold;
|
||||
padding-bottom: 5px;
|
||||
@@ -106,7 +106,7 @@
|
||||
height: 48px;
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
font-family: Montserrat-Regular, Montserrat;
|
||||
font-family: HarmonyOS-Regular, HarmonyOS;
|
||||
}
|
||||
|
||||
.itselectopen {
|
||||
@@ -130,12 +130,12 @@
|
||||
padding: 15px;
|
||||
background: #f2f2f2;
|
||||
border-radius: 8px;
|
||||
font-family: Montserrat-Regular, Montserrat;
|
||||
font-family: HarmonyOS-Regular, HarmonyOS;
|
||||
}
|
||||
|
||||
.bttj {
|
||||
font-size: 14px;
|
||||
font-family: Montserrat-Bold, Montserrat;
|
||||
font-family: HarmonyOS-Bold, HarmonyOS;
|
||||
font-weight: bold;
|
||||
/* width: 212px; */
|
||||
/* height: 48px; */
|
||||
@@ -173,7 +173,7 @@
|
||||
|
||||
.iotbt1 {
|
||||
font-size: 18px;
|
||||
font-family: Montserrat-Bold, Montserrat;
|
||||
font-family: HarmonyOS-Bold, HarmonyOS;
|
||||
padding-bottom: 24px;
|
||||
padding-top: 40px;
|
||||
font-weight: 700;
|
||||
@@ -210,7 +210,7 @@
|
||||
|
||||
.iotbtp1 {
|
||||
font-size: 14px;
|
||||
font-family: Montserrat-Bold, Montserrat;
|
||||
font-family: HarmonyOS-Bold, HarmonyOS;
|
||||
font-weight: bold;
|
||||
padding-bottom: 11px;
|
||||
word-break: break-word;
|
||||
@@ -219,7 +219,7 @@
|
||||
.iotbts1 {
|
||||
text-align: center;
|
||||
font-size: 12px;
|
||||
font-family: Montserrat-Medium, Montserrat;
|
||||
font-family: HarmonyOS-Medium, HarmonyOS;
|
||||
color: #9e9e9f;
|
||||
word-break: break-word;
|
||||
}
|
||||
@@ -290,7 +290,7 @@
|
||||
font-size: 14px;
|
||||
padding-top: 12px;
|
||||
text-align: center;
|
||||
font-family: Montserrat-Medium, Montserrat;
|
||||
font-family: HarmonyOS-Medium, HarmonyOS;
|
||||
overflow-wrap: break-word;
|
||||
word-break: break-word;
|
||||
}
|
||||
@@ -302,7 +302,7 @@
|
||||
.sfbt1 {
|
||||
text-align: center;
|
||||
font-size: 18px;
|
||||
font-family: Montserrat-Bold, Montserrat;
|
||||
font-family: HarmonyOS-Bold, HarmonyOS;
|
||||
font-weight: bold;
|
||||
padding-bottom: 24px;
|
||||
padding-top: 24px;
|
||||
@@ -333,7 +333,7 @@
|
||||
.cit {
|
||||
width: 100%;
|
||||
font-size: 14px;
|
||||
font-family: Montserrat-Regular, Montserrat;
|
||||
font-family: HarmonyOS-Regular, HarmonyOS;
|
||||
color: #000;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
@@ -388,7 +388,7 @@
|
||||
.wcu_s1 {
|
||||
color: #000;
|
||||
font-size: 16px;
|
||||
font-family: Montserrat-Medium, Montserrat;
|
||||
font-family: HarmonyOS-Medium, HarmonyOS;
|
||||
font-weight: 500;
|
||||
padding: 20px 24px;
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
font-size: 18px;
|
||||
color: #004bfa;
|
||||
text-align: left;
|
||||
font-family: Montserrat-Bold, Montserrat;
|
||||
font-family: HarmonyOS-Bold, HarmonyOS;
|
||||
font-weight: 700;
|
||||
margin-top: 0;
|
||||
margin-bottom: 12px;
|
||||
@@ -27,7 +27,7 @@
|
||||
color: #707070;
|
||||
text-align: center;
|
||||
text-align: left;
|
||||
font-family: Montserrat-Medium, Montserrat;
|
||||
font-family: HarmonyOS-Medium, HarmonyOS;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
|
||||
.itlable {
|
||||
font-size: 12.5px;
|
||||
font-family: Montserrat-Medium, Montserrat;
|
||||
font-family: HarmonyOS-Medium, HarmonyOS;
|
||||
color: #000000;
|
||||
font-weight: bold;
|
||||
padding-bottom: 5px;
|
||||
@@ -106,7 +106,7 @@
|
||||
height: 48px;
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
font-family: Montserrat-Regular, Montserrat;
|
||||
font-family: HarmonyOS-Regular, HarmonyOS;
|
||||
}
|
||||
|
||||
.itselectopen {
|
||||
@@ -130,13 +130,13 @@
|
||||
padding: 15px;
|
||||
background: #f2f2f2;
|
||||
border-radius: 8px;
|
||||
font-family: Montserrat-Regular, Montserrat;
|
||||
font-family: HarmonyOS-Regular, HarmonyOS;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.bttj {
|
||||
font-size: 14px;
|
||||
font-family: Montserrat-Bold, Montserrat;
|
||||
font-family: HarmonyOS-Bold, HarmonyOS;
|
||||
font-weight: bold;
|
||||
/* width: 212px; */
|
||||
padding: 15px 60px;
|
||||
@@ -173,7 +173,7 @@
|
||||
|
||||
.iotbt1 {
|
||||
font-size: 18px;
|
||||
font-family: Montserrat-Bold, Montserrat;
|
||||
font-family: HarmonyOS-Bold, HarmonyOS;
|
||||
padding-bottom: 24px;
|
||||
padding-top: 40px;
|
||||
font-weight: 700;
|
||||
@@ -210,7 +210,7 @@
|
||||
|
||||
.iotbtp1 {
|
||||
font-size: 14px;
|
||||
font-family: Montserrat-Bold, Montserrat;
|
||||
font-family: HarmonyOS-Bold, HarmonyOS;
|
||||
font-weight: bold;
|
||||
padding-bottom: 11px;
|
||||
word-break: break-word;
|
||||
@@ -219,7 +219,7 @@
|
||||
.iotbts1 {
|
||||
text-align: center;
|
||||
font-size: 12px;
|
||||
font-family: Montserrat-Medium, Montserrat;
|
||||
font-family: HarmonyOS-Medium, HarmonyOS;
|
||||
color: #9e9e9f;
|
||||
word-break: break-word;
|
||||
}
|
||||
@@ -290,7 +290,7 @@
|
||||
font-size: 14px;
|
||||
padding-top: 12px;
|
||||
text-align: center;
|
||||
font-family: Montserrat-Medium, Montserrat;
|
||||
font-family: HarmonyOS-Medium, HarmonyOS;
|
||||
overflow-wrap: break-word;
|
||||
word-break: break-word;
|
||||
}
|
||||
@@ -302,7 +302,7 @@
|
||||
.sfbt1 {
|
||||
text-align: center;
|
||||
font-size: 18px;
|
||||
font-family: Montserrat-Bold, Montserrat;
|
||||
font-family: HarmonyOS-Bold, HarmonyOS;
|
||||
font-weight: bold;
|
||||
padding-bottom: 24px;
|
||||
padding-top: 24px;
|
||||
@@ -333,7 +333,7 @@
|
||||
.cit {
|
||||
width: 100%;
|
||||
font-size: 14px;
|
||||
font-family: Montserrat-Regular, Montserrat;
|
||||
font-family: HarmonyOS-Regular, HarmonyOS;
|
||||
color: #000;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
@@ -387,7 +387,7 @@
|
||||
.wcu_s1 {
|
||||
color: #000;
|
||||
font: 16px;
|
||||
font-family: Montserrat-Medium, Montserrat;
|
||||
font-family: HarmonyOS-Medium, HarmonyOS;
|
||||
font-weight: 500;
|
||||
padding: 20px 24px;
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
margin-top: 3.3rem;
|
||||
}
|
||||
.oricoEGapp-Contact .banner_title {
|
||||
font-family: "Montserrat-Bold";
|
||||
font-family: "HarmonyOS-Bold";
|
||||
font-size: 1.5rem;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
@@ -24,7 +24,7 @@
|
||||
color: #000;
|
||||
}
|
||||
.oricoEGapp-Contact .title {
|
||||
font-family: "Montserrat-Bold";
|
||||
font-family: "HarmonyOS-Bold";
|
||||
font-size: 1rem;
|
||||
}
|
||||
.oricoEGapp-Contact .info {
|
||||
@@ -43,12 +43,12 @@
|
||||
height: 3rem;
|
||||
}
|
||||
.oricoEGapp-Contact .info .right .des {
|
||||
font-family: "Montserrat-Regular";
|
||||
font-family: "HarmonyOS-Regular";
|
||||
font-size: 0.875rem;
|
||||
line-height: 1.25rem;
|
||||
}
|
||||
.oricoEGapp-Contact .info_title {
|
||||
font-family: "Montserrat-Bold";
|
||||
font-family: "HarmonyOS-Bold";
|
||||
font-size: 0.875rem;
|
||||
line-height: 1.25rem;
|
||||
margin-bottom: 0.22rem;
|
||||
@@ -61,7 +61,7 @@
|
||||
}
|
||||
.oricoEGapp-Contact .question .title {
|
||||
margin-top: 0.5rem;
|
||||
font-family: "Montserrat-Bold";
|
||||
font-family: "HarmonyOS-Bold";
|
||||
font-size: 0.875rem;
|
||||
line-height: 1.25rem;
|
||||
}
|
||||
@@ -86,7 +86,7 @@
|
||||
.oricoEGapp-Contact .send {
|
||||
display: block;
|
||||
background-color: #004bfa;
|
||||
font-family: "Montserrat-Bold";
|
||||
font-family: "HarmonyOS-Bold";
|
||||
font-size: 0.875rem;
|
||||
padding: 0.75rem 1.5rem;
|
||||
color: #fff;
|
||||
@@ -98,7 +98,7 @@
|
||||
color: #ee2f53;
|
||||
}
|
||||
.oricoEGapp-Contact .contact_b {
|
||||
font-family: "Montserrat-SemiBold";
|
||||
font-family: "HarmonyOS-SemiBold";
|
||||
font-size: 1rem;
|
||||
padding-top: 1.125rem;
|
||||
padding-bottom: 1.125rem;
|
||||
@@ -119,42 +119,42 @@
|
||||
.oricoEGapp-Contact input::-webkit-input-placeholder {
|
||||
color: #9e9e9f;
|
||||
font-size: 0.875rem;
|
||||
font-family: "Montserrat-Regular";
|
||||
font-family: "HarmonyOS-Regular";
|
||||
}
|
||||
.oricoEGapp-Contact input:-moz-placeholder {
|
||||
color: #9e9e9f;
|
||||
font-size: 0.875rem;
|
||||
font-family: "Montserrat-Regular";
|
||||
font-family: "HarmonyOS-Regular";
|
||||
}
|
||||
.oricoEGapp-Contact input::-moz-placeholder {
|
||||
color: #9e9e9f;
|
||||
font-size: 0.875rem;
|
||||
font-family: "Montserrat-Regular";
|
||||
font-family: "HarmonyOS-Regular";
|
||||
}
|
||||
.oricoEGapp-Contact input:-ms-input-placeholder {
|
||||
color: #9e9e9f;
|
||||
font-size: 0.875rem;
|
||||
font-family: "Montserrat-Regular";
|
||||
font-family: "HarmonyOS-Regular";
|
||||
}
|
||||
.oricoEGapp-Contact textarea::-webkit-input-placeholder {
|
||||
color: #9e9e9f;
|
||||
font-size: 0.875rem;
|
||||
font-family: "Montserrat-Regular";
|
||||
font-family: "HarmonyOS-Regular";
|
||||
}
|
||||
.oricoEGapp-Contact textarea:-moz-placeholder {
|
||||
color: #9e9e9f;
|
||||
font-size: 0.875rem;
|
||||
font-family: "Montserrat-Regular";
|
||||
font-family: "HarmonyOS-Regular";
|
||||
}
|
||||
.oricoEGapp-Contact textarea::-moz-placeholder {
|
||||
color: #9e9e9f;
|
||||
font-size: 0.875rem;
|
||||
font-family: "Montserrat-Regular";
|
||||
font-family: "HarmonyOS-Regular";
|
||||
}
|
||||
.oricoEGapp-Contact textarea:-ms-input-placeholder {
|
||||
color: #9e9e9f;
|
||||
font-size: 0.875rem;
|
||||
font-family: "Montserrat-Regular";
|
||||
font-family: "HarmonyOS-Regular";
|
||||
}
|
||||
.oricoEGapp-Contact .narskfPage {
|
||||
width: 100%;
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
margin-top: 3.3rem;
|
||||
}
|
||||
.oricoEGapp-Contact .banner_title {
|
||||
font-family: "Montserrat-Bold";
|
||||
font-family: "HarmonyOS-Bold";
|
||||
font-size: 1.5rem;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
@@ -24,7 +24,7 @@
|
||||
color: #000;
|
||||
}
|
||||
.oricoEGapp-Contact .title {
|
||||
font-family: "Montserrat-Bold";
|
||||
font-family: "HarmonyOS-Bold";
|
||||
font-size: 1rem;
|
||||
}
|
||||
.oricoEGapp-Contact .info {
|
||||
@@ -46,12 +46,12 @@
|
||||
width: 88% !important;
|
||||
}
|
||||
.oricoEGapp-Contact .info .right .des {
|
||||
font-family: "Montserrat-Regular";
|
||||
font-family: "HarmonyOS-Regular";
|
||||
font-size: 0.875rem;
|
||||
line-height: 1.25rem;
|
||||
}
|
||||
.oricoEGapp-Contact .info_title {
|
||||
font-family: "Montserrat-Bold";
|
||||
font-family: "HarmonyOS-Bold";
|
||||
font-size: 0.875rem;
|
||||
line-height: 1.25rem;
|
||||
margin-bottom: 0.22rem;
|
||||
@@ -64,7 +64,7 @@
|
||||
}
|
||||
.oricoEGapp-Contact .question .title {
|
||||
margin-top: 0.5rem;
|
||||
font-family: "Montserrat-Bold";
|
||||
font-family: "HarmonyOS-Bold";
|
||||
font-size: 0.875rem;
|
||||
line-height: 1.25rem;
|
||||
}
|
||||
@@ -89,7 +89,7 @@
|
||||
.oricoEGapp-Contact .send {
|
||||
display: block;
|
||||
background-color: #004bfa;
|
||||
font-family: "Montserrat-Bold";
|
||||
font-family: "HarmonyOS-Bold";
|
||||
font-size: 0.875rem;
|
||||
padding: 0.75rem 1.5rem;
|
||||
color: #fff;
|
||||
@@ -101,7 +101,7 @@
|
||||
color: #ee2f53;
|
||||
}
|
||||
.oricoEGapp-Contact .contact_b {
|
||||
font-family: "Montserrat-SemiBold";
|
||||
font-family: "HarmonyOS-SemiBold";
|
||||
font-size: 1rem;
|
||||
padding-top: 1.125rem;
|
||||
padding-bottom: 1.125rem;
|
||||
@@ -122,40 +122,40 @@
|
||||
.oricoEGapp-Contact input::-webkit-input-placeholder {
|
||||
color: #9e9e9f;
|
||||
font-size: 0.875rem;
|
||||
font-family: "Montserrat-Regular";
|
||||
font-family: "HarmonyOS-Regular";
|
||||
}
|
||||
.oricoEGapp-Contact input:-moz-placeholder {
|
||||
color: #9e9e9f;
|
||||
font-size: 0.875rem;
|
||||
font-family: "Montserrat-Regular";
|
||||
font-family: "HarmonyOS-Regular";
|
||||
}
|
||||
.oricoEGapp-Contact input::-moz-placeholder {
|
||||
color: #9e9e9f;
|
||||
font-size: 0.875rem;
|
||||
font-family: "Montserrat-Regular";
|
||||
font-family: "HarmonyOS-Regular";
|
||||
}
|
||||
.oricoEGapp-Contact input:-ms-input-placeholder {
|
||||
color: #9e9e9f;
|
||||
font-size: 0.875rem;
|
||||
font-family: "Montserrat-Regular";
|
||||
font-family: "HarmonyOS-Regular";
|
||||
}
|
||||
.oricoEGapp-Contact textarea::-webkit-input-placeholder {
|
||||
color: #9e9e9f;
|
||||
font-size: 0.875rem;
|
||||
font-family: "Montserrat-Regular";
|
||||
font-family: "HarmonyOS-Regular";
|
||||
}
|
||||
.oricoEGapp-Contact textarea:-moz-placeholder {
|
||||
color: #9e9e9f;
|
||||
font-size: 0.875rem;
|
||||
font-family: "Montserrat-Regular";
|
||||
font-family: "HarmonyOS-Regular";
|
||||
}
|
||||
.oricoEGapp-Contact textarea::-moz-placeholder {
|
||||
color: #9e9e9f;
|
||||
font-size: 0.875rem;
|
||||
font-family: "Montserrat-Regular";
|
||||
font-family: "HarmonyOS-Regular";
|
||||
}
|
||||
.oricoEGapp-Contact textarea:-ms-input-placeholder {
|
||||
color: #9e9e9f;
|
||||
font-size: 0.875rem;
|
||||
font-family: "Montserrat-Regular";
|
||||
font-family: "HarmonyOS-Regular";
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
@font-face {
|
||||
font-family: 'icomoon';
|
||||
src: url('../fonts/icomoon/icomoon.eot?11cuay');
|
||||
src: url('../fonts/icomoon/icomoon.eot?11cuay#iefix') format('embedded-opentype'), url('../fonts/icomoon/icomoon.ttf?11cuay') format('truetype'),
|
||||
src: url('../fonts/icomoon/icomoon.eot?11cuay#iefix') format('embedded-opentype'), url('../fonts/icomoon/icomoon.ttf?11cuay') format('opentype'),
|
||||
url('../fonts/icomoon/icomoon.woff?11cuay') format('woff'), url('../fonts/icomoon/icomoon.svg?11cuay#icomoon') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
@@ -54,7 +54,7 @@
|
||||
font-family: 'colleciton';
|
||||
src: url('../fonts/icomoon/colleciton/icomoon.eot?11cuay');
|
||||
src: url('../fonts/icomoon/colleciton/icomoon.eot?11cuay#iefix') format('embedded-opentype'),
|
||||
url('../fonts/icomoon/colleciton/icomoon.ttf?11cuay') format('truetype'), url('../fonts/icomoon/colleciton/icomoon.woff?11cuay') format('woff'),
|
||||
url('../fonts/icomoon/colleciton/icomoon.ttf?11cuay') format('opentype'), url('../fonts/icomoon/colleciton/icomoon.woff?11cuay') format('woff'),
|
||||
url('../fonts/icomoon/colleciton/icomoon.svg?11cuay#icomoon') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
@@ -83,7 +83,7 @@
|
||||
@font-face {
|
||||
font-family: 'icomoon';
|
||||
src: url('../fonts/icomoon/icomoona.eot?c46hgi');
|
||||
src: url('../fonts/icomoon/icomoona.eot?c46hgi#iefix') format('embedded-opentype'), url('../fonts/icomoon/icomoona.ttf?c46hgi') format('truetype'),
|
||||
src: url('../fonts/icomoon/icomoona.eot?c46hgi#iefix') format('embedded-opentype'), url('../fonts/icomoon/icomoona.ttf?c46hgi') format('opentype'),
|
||||
url('../fonts/icomoon/icomoona.woff?c46hgi') format('woff'), url('../fonts/icomoon/icomoona.svg?c46hgi#icomoon') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
@font-face {
|
||||
font-family: 'icomoon';
|
||||
src: url('../fonts/icomoon/icomoon.eot?ujw7hy');
|
||||
src: url('../fonts/icomoon/icomoon.eot?ujw7hy#iefix') format('embedded-opentype'), url('../fonts/icomoon/icomoon.ttf?ujw7hy') format('truetype'),
|
||||
src: url('../fonts/icomoon/icomoon.eot?ujw7hy#iefix') format('embedded-opentype'), url('../fonts/icomoon/icomoon.ttf?ujw7hy') format('opentype'),
|
||||
url('../fonts/icomoon/icomoon.woff?ujw7hy') format('woff'), url('../fonts/icomoon/icomoon.svg?ujw7hy#icomoon') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
@@ -114,7 +114,7 @@
|
||||
font-family: 'icomoon01';
|
||||
src: url('fonts-20190124/icomoon.eot?ll2528');
|
||||
src: url('fonts-20190124/icomoon.eot?ll2528#iefix') format('embedded-opentype'),
|
||||
url('fonts-20190124/icomoon.ttf?ll2528') format('truetype'), url('fonts-20190124/icomoon.woff?ll2528') format('woff'),
|
||||
url('fonts-20190124/icomoon.ttf?ll2528') format('opentype'), url('fonts-20190124/icomoon.woff?ll2528') format('woff'),
|
||||
url('fonts-20190124/icomoon.svg?ll2528#icomoon') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
@@ -161,7 +161,7 @@
|
||||
@font-face {
|
||||
font-family: 'icomoon02';
|
||||
src: url('fonts/other/icomoon.eot?ujw7hy');
|
||||
src: url('fonts/other/icomoon.eot?ujw7hy#iefix') format('embedded-opentype'), url('fonts/other/icomoon.ttf?ujw7hy') format('truetype'),
|
||||
src: url('fonts/other/icomoon.eot?ujw7hy#iefix') format('embedded-opentype'), url('fonts/other/icomoon.ttf?ujw7hy') format('opentype'),
|
||||
url('fonts/other/icomoon.woff?ujw7hy') format('woff'), url('fonts/other/icomoon.svg?ujw7hy#icomoon') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
@@ -189,7 +189,7 @@
|
||||
font-family: 'icomoon05';
|
||||
src: url('fonts-20220322/icomoon.eot?cdcz43');
|
||||
src: url('fonts-20220322/icomoon.eot?cdcz43#iefix') format('embedded-opentype'),
|
||||
url('fonts-20220322/icomoon.ttf?cdcz43') format('truetype'), url('fonts-20220322/icomoon.woff?cdcz43') format('woff'),
|
||||
url('fonts-20220322/icomoon.ttf?cdcz43') format('opentype'), url('fonts-20220322/icomoon.woff?cdcz43') format('woff'),
|
||||
url('fonts-20220322/icomoon.svg?cdcz43#icomoon') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
display: none;
|
||||
}
|
||||
.oircoEgapp-head .top-menu .it-ct {
|
||||
font-family: "Montserrat-SemiBold";
|
||||
font-family: "HarmonyOS-SemiBold";
|
||||
font-weight: bold;
|
||||
}
|
||||
.oircoEgapp-head .top-menu .it-ct .it-1 {
|
||||
|
||||
@@ -1,28 +1,45 @@
|
||||
|
||||
@font-face {
|
||||
font-family: "Montserrat";
|
||||
src: url("../fonts/Montserrat-Regular.ttf") format("truetype");
|
||||
font-family: "HarmonyOS";
|
||||
src: url("//ow.static.f2b211.com/static/fonts/HarmonyOS_Sans_SC_Regular.ttf") format("opentype");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Montserrat-Bold";
|
||||
src: url("../fonts/Montserrat-Bold.ttf") format("truetype");
|
||||
font-family: "HarmonyOS-Regular";
|
||||
src: url("//ow.static.f2b211.com/static/fonts/HarmonyOS_Sans_SC_Regular.ttf") format("opentype");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Montserrat-Medium";
|
||||
src: url("../fonts/Montserrat-Medium.ttf") format("truetype");
|
||||
font-family: "HarmonyOS-Bold";
|
||||
src: url("//ow.static.f2b211.com/static/fonts/HarmonyOS_Sans_SC_Bold.ttf") format("opentype");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
@font-face {
|
||||
font-family: "HarmonyOS-Medium";
|
||||
src: url("//ow.static.f2b211.com/static/fonts/HarmonyOS_Sans_SC_Medium.ttf") format("opentype");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
/* HarmonyOS-SemiBold1 */
|
||||
@font-face {
|
||||
font-family: "HarmonyOS-SemiBold";
|
||||
src: url("//ow.static.f2b211.com/static/fonts/HarmonyOS_Sans_SC_Bold.ttf") format("opentype");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
@font-face {
|
||||
font-family: "HarmonyOS-Light";
|
||||
src: url("//ow.static.f2b211.com/static/fonts/HarmonyOS_Sans_SC_Light.ttf") format("opentype");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
/* font-family: 'Montserrat'; */
|
||||
font-family: 'HarmonyOS';
|
||||
-ms-overflow-style: none;
|
||||
/* IE 和 Edge */
|
||||
scrollbar-width: none;
|
||||
@@ -88,7 +105,7 @@ a {
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'Montserrat-SemiBold';
|
||||
font-family: 'HarmonyOS-SemiBold';
|
||||
}
|
||||
|
||||
/* 分页样式 */
|
||||
|
||||
@@ -1,29 +1,30 @@
|
||||
@font-face {
|
||||
font-family: "Montserrat";
|
||||
src: url("../fonts/Montserrat-Regular.ttf") format("truetype");
|
||||
font-family: "HarmonyOS";
|
||||
src: url("//ow.static.f2b211.com/static/fonts/HarmonyOS_Sans_SC_Regular.woff2") format("woff2");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Montserrat-Bold";
|
||||
src: url("../fonts/Montserrat-Bold.ttf") format("truetype");
|
||||
font-family: "HarmonyOS-Bold";
|
||||
src: url("//ow.static.f2b211.com/static/fonts/HarmonyOS_Sans_SC_Bold.woff2") format("woff2");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Montserrat-Medium";
|
||||
src: url("../fonts/Montserrat-Medium.ttf") format("truetype");
|
||||
font-family: "HarmonyOS-Medium";
|
||||
src: url("//ow.static.f2b211.com/static/fonts/HarmonyOS_Sans_SC_Medium.woff2") format("woff2");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
/* HarmonyOS-SemiBold1 */
|
||||
@font-face {
|
||||
font-family: "Montserrat-SemiBold";
|
||||
src: url("../fonts/Montserrat-SemiBold.ttf") format("truetype");
|
||||
font-family: "HarmonyOS-SemiBold";
|
||||
src: url("//ow.static.f2b211.com/static/fonts/HarmonyOS_Sans_SC_Bold.woff2") format("woff2");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
body {
|
||||
font-family: 'Montserrat-SemiBold';
|
||||
font-family: 'HarmonyOS-SemiBold';
|
||||
margin: auto;
|
||||
background-color: #f5f5f5;
|
||||
max-width: 750px;
|
||||
@@ -591,7 +592,7 @@ button.swiper-pagination-bullet {
|
||||
.Innew-text .title {
|
||||
font-size: 2.5rem;
|
||||
padding-bottom: 1rem;
|
||||
font-family: 'Montserrat-Bold';
|
||||
font-family: 'HarmonyOS-Bold';
|
||||
}
|
||||
.Inpro-text {
|
||||
padding: 2rem 0 0.8rem;
|
||||
@@ -600,7 +601,7 @@ button.swiper-pagination-bullet {
|
||||
.Inpro-text .title {
|
||||
font-size: 1.5rem;
|
||||
padding-bottom: 1rem;
|
||||
font-family: 'Montserrat-Bold';
|
||||
font-family: 'HarmonyOS-Bold';
|
||||
}
|
||||
|
||||
.Innew-text .more {
|
||||
@@ -635,7 +636,7 @@ video img {
|
||||
font-size: 1.2rem;
|
||||
max-height: 3rem;
|
||||
overflow: hidden;
|
||||
font-family: 'Montserrat-Bold';
|
||||
font-family: 'HarmonyOS-Bold';
|
||||
}
|
||||
.inprotext .t-f16 {
|
||||
font-size: 1rem;
|
||||
@@ -957,12 +958,12 @@ video img {
|
||||
margin: auto;
|
||||
line-height: 2rem;
|
||||
padding: 0 3rem;
|
||||
font-family: 'Montserrat-Bold';
|
||||
font-family: 'HarmonyOS-Bold';
|
||||
}
|
||||
.ban-t {
|
||||
padding: 0.5rem 3rem;
|
||||
font-size: 1.125rem;
|
||||
font-family: 'Montserrat-Regular';
|
||||
font-family: 'HarmonyOS-Regular';
|
||||
}
|
||||
.btn-more {
|
||||
background: transparent;
|
||||
@@ -979,7 +980,7 @@ video img {
|
||||
margin: auto;
|
||||
font-size: 1rem;
|
||||
font-weight: 600;
|
||||
font-family: 'Montserrat-Bold';
|
||||
font-family: 'HarmonyOS-Bold';
|
||||
}
|
||||
/*类别*/
|
||||
.category {
|
||||
@@ -1095,11 +1096,11 @@ video img {
|
||||
padding: 0.2rem 0;
|
||||
text-align: center;
|
||||
margin: 0;
|
||||
font-family: 'Montserrat-Bold';
|
||||
font-family: 'HarmonyOS-Bold';
|
||||
}
|
||||
.num-bg li p {
|
||||
font-size: 0.8rem;
|
||||
font-family: 'Montserrat-Regular';
|
||||
font-family: 'HarmonyOS-Regular';
|
||||
}
|
||||
/*标题*/
|
||||
.Tech-text {
|
||||
@@ -1115,7 +1116,7 @@ video img {
|
||||
.Tech-text p {
|
||||
padding: 1rem 0;
|
||||
font-size: 0.875rem;
|
||||
font-family: 'Montserrat-Medium';
|
||||
font-family: 'HarmonyOS-Medium';
|
||||
}
|
||||
|
||||
.pos-text {
|
||||
@@ -1125,7 +1126,7 @@ video img {
|
||||
color: #fff;
|
||||
font-size: 0.825rem;
|
||||
margin: 0 auto;
|
||||
font-family: 'Montserrat-Bold';
|
||||
font-family: 'HarmonyOS-Bold';
|
||||
height: 2rem;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
@@ -1157,7 +1158,7 @@ video img {
|
||||
font-size: 0.9rem;
|
||||
padding: 1rem 0;
|
||||
line-height: 1.3em;
|
||||
font-family: 'Montserrat-Bold';
|
||||
font-family: 'HarmonyOS-Bold';
|
||||
word-break: break-all;
|
||||
}
|
||||
.faq span {
|
||||
@@ -1172,7 +1173,7 @@ video img {
|
||||
font-size: 0.875rem;
|
||||
line-height: 1.75em;
|
||||
color: #666;
|
||||
font-family: 'Montserrat-Medium';
|
||||
font-family: 'HarmonyOS-Medium';
|
||||
}
|
||||
.faq i {
|
||||
position: absolute;
|
||||
@@ -1209,7 +1210,7 @@ video img {
|
||||
word-wrap: break-word;
|
||||
overflow: hidden;
|
||||
height: 1.5rem;
|
||||
font-family: 'Montserrat-Medium';
|
||||
font-family: 'HarmonyOS-Medium';
|
||||
font-weight: 400;
|
||||
word-break: break-all;
|
||||
}
|
||||
@@ -1217,7 +1218,7 @@ video img {
|
||||
font-size: 1.125rem;
|
||||
color: #7f7f7f;
|
||||
padding-bottom: 1rem;
|
||||
font-family: 'Montserrat-Medium';
|
||||
font-family: 'HarmonyOS-Medium';
|
||||
font-weight: 400;
|
||||
}
|
||||
/*foot */
|
||||
@@ -1249,7 +1250,7 @@ video img {
|
||||
}
|
||||
.foot-in h3 {
|
||||
font-size: 1.25rem;
|
||||
font-family: 'Montserrat-Bold';
|
||||
font-family: 'HarmonyOS-Bold';
|
||||
font-weight: 100;
|
||||
}
|
||||
.logo-input {
|
||||
@@ -1292,7 +1293,7 @@ video img {
|
||||
.foot-cate li p {
|
||||
font-size: 0.7rem;
|
||||
line-height: 2.5rem;
|
||||
font-family: 'Montserrat-Medium';
|
||||
font-family: 'HarmonyOS-Medium';
|
||||
word-wrap: break-word;
|
||||
}
|
||||
.foot-wei {
|
||||
@@ -1327,7 +1328,7 @@ video img {
|
||||
width: 100%;
|
||||
height: 1.2rem;
|
||||
cursor: pointer;
|
||||
font-family: 'Montserrat-Medium';
|
||||
font-family: 'HarmonyOS-Medium';
|
||||
}
|
||||
/*下拉*/
|
||||
.m_footer .left {
|
||||
@@ -1375,7 +1376,7 @@ video img {
|
||||
text-align: center;
|
||||
font-size: 12px;
|
||||
padding-bottom: 0.5rem;
|
||||
font-family: 'Montserrat-Medium';
|
||||
font-family: 'HarmonyOS-Medium';
|
||||
}
|
||||
/*下拉*/
|
||||
.mask-up {
|
||||
@@ -1985,7 +1986,7 @@ video img {
|
||||
}
|
||||
.swiper-slide a {
|
||||
color: #000;
|
||||
font-family: 'Montserrat-SemiBold';
|
||||
font-family: 'HarmonyOS-SemiBold';
|
||||
}
|
||||
.swiper-slide img {
|
||||
max-width: 100%;
|
||||
@@ -2491,7 +2492,7 @@ video img {
|
||||
margin-right: 0px;
|
||||
line-height: 40px;
|
||||
font-weight: 600;
|
||||
font-family: Montserrat !important;
|
||||
font-family: HarmonyOS !important;
|
||||
color: #666;
|
||||
text-align: left;
|
||||
}
|
||||
@@ -3479,26 +3480,26 @@ video img {
|
||||
font-size: 1.5rem;
|
||||
width: 90%;
|
||||
margin: 4rem auto 0;
|
||||
font-family: 'Montserrat-Bold';
|
||||
font-family: 'HarmonyOS-Bold';
|
||||
}
|
||||
.timedesin {
|
||||
font-size: 0.875rem;
|
||||
padding: 0.5rem 1rem;
|
||||
line-height: 1.3rem;
|
||||
width: 90%;
|
||||
font-family: 'Montserrat-Medium';
|
||||
font-family: 'HarmonyOS-Medium';
|
||||
}
|
||||
.timeblue {
|
||||
color: #004bfa;
|
||||
font-size: 1.125rem;
|
||||
font-family: 'Montserrat-Medium';
|
||||
font-family: 'HarmonyOS-Medium';
|
||||
}
|
||||
.timeblue img {
|
||||
vertical-align: middle;
|
||||
}
|
||||
.timeblue a {
|
||||
color: #004bfa;
|
||||
font-family: 'Montserrat-Medium';
|
||||
font-family: 'HarmonyOS-Medium';
|
||||
}
|
||||
/*视频*/
|
||||
.video-youtu {
|
||||
@@ -3558,7 +3559,7 @@ video img {
|
||||
}
|
||||
.vision-title {
|
||||
font-size: 1rem;
|
||||
font-family: 'Montserrat-Bold';
|
||||
font-family: 'HarmonyOS-Bold';
|
||||
width: 98%;
|
||||
margin: 1rem auto 0;
|
||||
}
|
||||
@@ -3566,7 +3567,7 @@ video img {
|
||||
font-size: 0.875;
|
||||
line-height: 1.5rem;
|
||||
color: #707070;
|
||||
font-family: 'Montserrat-Regular';
|
||||
font-family: 'HarmonyOS-Regular';
|
||||
width: 98%;
|
||||
margin: 1rem auto;
|
||||
}
|
||||
@@ -3584,7 +3585,7 @@ video img {
|
||||
}
|
||||
.brand_title {
|
||||
font-size: 1.125rem;
|
||||
font-family: 'Montserrat-Bold';
|
||||
font-family: 'HarmonyOS-Bold';
|
||||
width: 98%;
|
||||
margin: 1rem auto 0;
|
||||
position: relative;
|
||||
@@ -3602,7 +3603,7 @@ video img {
|
||||
font-size: 0.875;
|
||||
line-height: 1.5rem;
|
||||
color: #000000;
|
||||
font-family: 'Montserrat-Regular';
|
||||
font-family: 'HarmonyOS-Regular';
|
||||
width: 98%;
|
||||
margin: 1rem auto;
|
||||
}
|
||||
@@ -3655,7 +3656,7 @@ video::-webkit-media-controls-current-time-display {
|
||||
}
|
||||
.m_ach .title {
|
||||
font-size: 1.125rem;
|
||||
font-family: 'Montserrat-Bold';
|
||||
font-family: 'HarmonyOS-Bold';
|
||||
width: 98%;
|
||||
margin: 1rem auto 0;
|
||||
position: relative;
|
||||
@@ -3680,7 +3681,7 @@ video::-webkit-media-controls-current-time-display {
|
||||
}
|
||||
.m_ach .list-num li p {
|
||||
color: #707070;
|
||||
font-family: 'Montserrat-Regular';
|
||||
font-family: 'HarmonyOS-Regular';
|
||||
}
|
||||
/*新闻评测*/
|
||||
.news-vertu {
|
||||
@@ -3976,7 +3977,7 @@ video::-webkit-media-controls-current-time-display {
|
||||
border-radius: 8px;
|
||||
height: 48px;
|
||||
box-shadow: none;
|
||||
font-family: Montserrat-Regular, Montserrat;
|
||||
font-family: HarmonyOS-Regular, HarmonyOS;
|
||||
}
|
||||
.comment_area {
|
||||
width: 100% !important;
|
||||
|
||||
40
public/static/index/mobile/css/topic_laptop/amd.css
Normal file
@@ -0,0 +1,40 @@
|
||||
.amd-box {
|
||||
width: 100%;
|
||||
position: relative;
|
||||
max-width: 6.82rem;
|
||||
margin: 0 auto;
|
||||
margin-top: -0.86rem;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.amd-img-header,
|
||||
.amd-img-main,
|
||||
.amd-img-footer {
|
||||
width: 100%;
|
||||
max-width: 6.82rem;
|
||||
}
|
||||
.amd-img-main {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.amd-img-main-left,
|
||||
.amd-img-main-right {
|
||||
flex: 1;
|
||||
max-width: 3.36rem;
|
||||
display: block;
|
||||
}
|
||||
.amd-img-main-left img,
|
||||
.amd-img-main-right img {
|
||||
width: 3.36rem;
|
||||
display: block;
|
||||
margin-top: 0.1rem;
|
||||
}
|
||||
.amd-img-header img {
|
||||
width: 6.82rem;
|
||||
display: block;
|
||||
}
|
||||
.amd-img-footer img {
|
||||
width: 6.82rem;
|
||||
margin-top: 0.1rem;
|
||||
display: block;
|
||||
}
|
||||
50
public/static/index/mobile/css/topic_laptop/bly.css
Normal file
@@ -0,0 +1,50 @@
|
||||
.bly {
|
||||
margin: 0 0.34rem;
|
||||
aspect-ratio: 682/338;
|
||||
/* max-height: 6.97rem; */
|
||||
padding-top: 1.5rem;
|
||||
}
|
||||
|
||||
.bly .ba-slider .handle:after {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
/* 1. 缩小宽高:从48px改为32px(可根据需求再调,比如28px/30px) */
|
||||
width: 0.32rem;
|
||||
height: 0.32rem;
|
||||
/* 2. 同步调整margin:宽高的一半,保证居中(48px对应-24px,32px对应-16px) */
|
||||
margin: -0.16rem 0 0 -0.16rem;
|
||||
content: '';
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background: #fff
|
||||
url('https://dev.ow.f2b211.com/static/index/pc/images/ba-arrow.png')
|
||||
/* 3. 缩小背景箭头:从22px改为16px(匹配整体尺寸) */ center center /
|
||||
0.16rem 0.16rem no-repeat;
|
||||
border: 1px solid #fff;
|
||||
border-radius: 50%;
|
||||
transition: all 0.3s ease;
|
||||
transform: scale(1);
|
||||
z-index: 5;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.bly .ba-slider .handle.ba-draggable:after {
|
||||
transform: scale(0.8);
|
||||
}
|
||||
.bly-t {
|
||||
font-size: 0.48rem;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
}
|
||||
.bly-p {
|
||||
font-size: 0.20rem;
|
||||
color: #cbcfd8;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
padding-top: 0.37rem;
|
||||
padding-bottom: 0.56rem;
|
||||
font-family: 'HarmonyOS-Light';
|
||||
line-height: 1.5;
|
||||
}
|
||||
50
public/static/index/mobile/css/topic_laptop/cpu.css
Normal file
@@ -0,0 +1,50 @@
|
||||
.cpu {
|
||||
margin-top: 1.5rem;
|
||||
width: 100%;
|
||||
aspect-ratio: 750/882;
|
||||
position: relative;
|
||||
}
|
||||
.cpu-main {
|
||||
width: 100%;
|
||||
aspect-ratio: 750/882;
|
||||
}
|
||||
.cpu-texts-t {
|
||||
color: #fff;
|
||||
font-size: 0.48rem;
|
||||
line-height: 1;
|
||||
text-align: center;
|
||||
padding-top: 0.19rem;
|
||||
}
|
||||
.cpu-texts-p {
|
||||
color: #cbcfd8;
|
||||
font-size: 0.20rem;
|
||||
margin-top: 0.37rem;
|
||||
line-height: 1;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.cpu-footer {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
.cpu-footer-img {
|
||||
display: flex;
|
||||
gap: 0.1rem;
|
||||
}
|
||||
.cpu-footer img {
|
||||
width: 100%;
|
||||
max-width: 1.48rem;
|
||||
display: block;
|
||||
}
|
||||
.cpu-footer-desc {
|
||||
font-size: 0.16rem;
|
||||
color: #cbcfd8;
|
||||
text-align: center;
|
||||
margin-top: 0.38rem;
|
||||
margin-bottom: 0.51rem;
|
||||
width: 100%;
|
||||
}
|
||||
59
public/static/index/mobile/css/topic_laptop/endurance.css
Normal file
@@ -0,0 +1,59 @@
|
||||
.endurance {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
margin-top: 1.78rem;
|
||||
aspect-ratio: 750/778;
|
||||
}
|
||||
.endurance-texts {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
position: absolute;
|
||||
top: -0.4rem;
|
||||
}
|
||||
.endurance-t {
|
||||
width: 100%;
|
||||
font-size: 0.5rem;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
}
|
||||
.endurance-t span:nth-child(1) {
|
||||
font-size: 0.4rem;
|
||||
line-height: 1;
|
||||
}
|
||||
.endurance-t span:nth-child(2) {
|
||||
font-size: 0.48rem;
|
||||
margin-left: 0.11rem;
|
||||
line-height: 1;
|
||||
}
|
||||
.endurance-p {
|
||||
font-size: 0.20rem;
|
||||
color: #cbcfd8;
|
||||
text-align: center;
|
||||
padding-top: 0.37rem;
|
||||
font-family: 'HarmonyOS-Light';
|
||||
}
|
||||
.endurance-img {
|
||||
width: 100%;
|
||||
|
||||
position: absolute;
|
||||
bottom: 0.62rem;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
gap: 0.1rem;
|
||||
}
|
||||
.endurance-img img {
|
||||
width: 2.46rem;
|
||||
display: block;
|
||||
}
|
||||
.endurance-footer-p {
|
||||
color: #ffffff;
|
||||
font-size: 0.18rem;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
text-align: center;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
width: 100%;
|
||||
}
|
||||
161
public/static/index/mobile/css/topic_laptop/footer.css
Normal file
@@ -0,0 +1,161 @@
|
||||
.footer-imgs {
|
||||
width: 6.8rem;
|
||||
margin: 0 auto;
|
||||
margin-top: 1.5rem;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.footer-imgs img {
|
||||
width: 2.22rem;
|
||||
}
|
||||
.footer-imgs img:nth-child(4),
|
||||
.footer-imgs img:nth-child(5),
|
||||
.footer-imgs img:nth-child(6) {
|
||||
margin-top: 0.09rem;
|
||||
}
|
||||
|
||||
.footer-texts {
|
||||
width: 6.8rem;
|
||||
margin: 1.5rem 0.35rem;
|
||||
/* font-size: 0.16rem; */
|
||||
color: #909399;
|
||||
/* white-space: normal; */
|
||||
/* margin-top: 1.5rem;
|
||||
margin-bottom: 1.5rem; */
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.footer-texts p {
|
||||
width: 6.8rem;
|
||||
font-size: 0.16rem;
|
||||
padding-left: 0.1rem;
|
||||
text-indent: -0.2rem;
|
||||
/* line-height: 1.5;
|
||||
margin-bottom: 0.1rem; */
|
||||
font-family: 'HarmonyOS-Light';
|
||||
letter-spacing: 1px;
|
||||
}
|
||||
|
||||
|
||||
.footer-texts-en {
|
||||
width: 6.8rem;
|
||||
margin: 1.5rem 0.35rem;
|
||||
/* font-size: 0.16rem; */
|
||||
color: #909399;
|
||||
/* white-space: normal; */
|
||||
/* margin-top: 1.5rem;
|
||||
margin-bottom: 1.5rem; */
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.footer-texts-en p {
|
||||
width: 6.8rem;
|
||||
font-size: 0.16rem;
|
||||
padding-left: 0.1rem;
|
||||
text-indent: -0.1rem;
|
||||
/* line-height: 1.5;
|
||||
margin-bottom: 0.1rem; */
|
||||
font-family: 'HarmonyOS-Light';
|
||||
/* letter-spacing: 1px; */
|
||||
}
|
||||
|
||||
|
||||
.oircoEgapp-foot .logo-white img {
|
||||
margin: 0 auto;
|
||||
}
|
||||
.oircoEgapp-foot .m_footer {
|
||||
display: flex;
|
||||
/* flex-direction: row; */
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin:0 4%;
|
||||
padding-top: 0 !important;
|
||||
}
|
||||
/* .oircoEgapp-foot .m_footer .left,
|
||||
.oircoEgapp-foot .foot-con {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
} */
|
||||
.oircoEgapp-foot .m_footer .right {
|
||||
flex:1;
|
||||
width: 50% !important;
|
||||
display: flex !important;
|
||||
justify-content: end !important;
|
||||
/* max-width: 55%; */
|
||||
}
|
||||
.oircoEgapp-foot .m_footer .left {
|
||||
flex:1 !important;
|
||||
/* max-width: 40%;
|
||||
justify-content: end;
|
||||
margin-right: 4%; */
|
||||
width: 50% !important;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.oircoEgapp-foot .foot-con span {
|
||||
width: auto;
|
||||
padding: 0 0.625rem;
|
||||
}
|
||||
.oircoEgapp-foot .foot-cate .clearfix li h3 {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.oircoEgapp-foot .foot-cate .clearfix li p,
|
||||
.oircoEgapp-foot .foot-cate .clearfix li p a {
|
||||
font-size: 12px;
|
||||
}
|
||||
.logo-white {
|
||||
text-align: center;
|
||||
padding: 1rem 0 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.foot-cate {
|
||||
padding: 0.16rem;
|
||||
}
|
||||
.foot-cate h3 {
|
||||
font-size: 0.28rem;
|
||||
}
|
||||
.foot-cate li {
|
||||
padding: 0.16rem 0;
|
||||
min-height: 276px;
|
||||
|
||||
}
|
||||
.foot-cate li p {
|
||||
line-height: 40px;
|
||||
}
|
||||
.m_footer .right {
|
||||
float: right;
|
||||
width: 57%;
|
||||
text-align: left;
|
||||
}
|
||||
.foot-con span {
|
||||
font-size:14px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
-webkit-line-clamp: 1;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
cursor: pointer;
|
||||
font-family: 'HarmonyOS-Medium';
|
||||
}
|
||||
.oircoEgapp-foot .foot-con span {
|
||||
width: auto;
|
||||
padding: 0 0.125rem;
|
||||
}
|
||||
.m_footer .left a{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
}
|
||||
.m_footer .left img {
|
||||
width: 30px;
|
||||
padding-right:0 !important;
|
||||
padding-top: 0;
|
||||
}
|
||||
/* .oircoEgapp-foot .m_footer .right {
|
||||
max-width: 50%;
|
||||
} */
|
||||
.m_footer .right {
|
||||
padding: 0 !important;
|
||||
}
|
||||
69
public/static/index/mobile/css/topic_laptop/fs.css
Normal file
@@ -0,0 +1,69 @@
|
||||
.fs {
|
||||
width: 100%;
|
||||
}
|
||||
.fs-box {
|
||||
width: 100%;
|
||||
aspect-ratio: 16/9;
|
||||
}
|
||||
.fs-img,
|
||||
.fs-video {
|
||||
backface-visibility: hidden; /* 开启硬件加速 */
|
||||
transform: translateZ(0); /* 硬件加速 */
|
||||
}
|
||||
.fs-box img {
|
||||
width: 100%;
|
||||
}
|
||||
.fs-box-img {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.fs-h-img {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
gap: 0.11rem;
|
||||
|
||||
}
|
||||
.fs-h-img img {
|
||||
width: 3.35rem;
|
||||
aspect-ratio: 335/95;
|
||||
|
||||
}
|
||||
.fs-b-img {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
margin-top: 0.1rem;
|
||||
aspect-ratio: 681/122;
|
||||
}
|
||||
.fs-b-img img {
|
||||
width: 6.81rem;
|
||||
}
|
||||
.fs-ts {
|
||||
font-size: 0.18rem;
|
||||
text-align: center;
|
||||
color: #cbcfd8;
|
||||
padding: 0.4rem 0;
|
||||
}
|
||||
.dl {
|
||||
width: 100%;
|
||||
padding-top: 1.01rem;
|
||||
}
|
||||
.dl-t {
|
||||
color: #fff;
|
||||
font-size: 0.48rem;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
line-height: 1.5;
|
||||
}
|
||||
.dl-p {
|
||||
color: #cbcfd8;
|
||||
font-size: 0.20rem;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
padding-top: 0.37rem;
|
||||
/* padding-bottom: 0.37rem; */
|
||||
line-height: 1.5;
|
||||
font-family: 'HarmonyOS-Light';
|
||||
}
|
||||
44
public/static/index/mobile/css/topic_laptop/gpu.css
Normal file
@@ -0,0 +1,44 @@
|
||||
.gpu {
|
||||
width: 100%;
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.gpu-texts {
|
||||
color: #fff;
|
||||
font-size: 0.48rem;
|
||||
margin: 0 0.34rem;
|
||||
}
|
||||
.gpu-texts-t {
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.gpu-texts-p {
|
||||
font-size: 0.20rem;
|
||||
color: #cbcfd8;
|
||||
line-height: 1.5;
|
||||
margin-top: 0.37rem;
|
||||
}
|
||||
.gpu-main-img {
|
||||
width: 100%;
|
||||
aspect-ratio: 750/780;
|
||||
}
|
||||
.gpu-amd-img {
|
||||
width: 100%;
|
||||
}
|
||||
.gpu-amd-img img {
|
||||
max-width: 2.26rem;
|
||||
width: 100%;
|
||||
margin-top: 2.39rem;
|
||||
margin-left: 0.45rem;
|
||||
}
|
||||
.gpu-footer-imgs {
|
||||
display: flex;
|
||||
position: absolute;
|
||||
bottom: 0.61rem;
|
||||
gap: 0.1rem;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
.gpu-footer-imgs img {
|
||||
max-width: 1.63rem;
|
||||
}
|
||||
233
public/static/index/mobile/css/topic_laptop/header.css
Normal file
@@ -0,0 +1,233 @@
|
||||
.oircoEgapp-head {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
z-index: 1000;
|
||||
width: -webkit-fill-available;
|
||||
}
|
||||
.oircoEgapp-head .headtop {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 0 0.16rem;
|
||||
height:60px;
|
||||
background: #fff;
|
||||
}
|
||||
.oircoEgapp-head .headtop .headerlogimg {
|
||||
|
||||
max-width: 140px;
|
||||
min-width: 123px;
|
||||
height: auto !important;
|
||||
display: block;
|
||||
/* height: 2.25rem; */
|
||||
}
|
||||
.oircoEgapp-head .top-menu {
|
||||
background-color: #fff;
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
color: #000;
|
||||
display: none;
|
||||
}
|
||||
.oircoEgapp-head .top-menu .it-ct {
|
||||
font-family: "HarmonyOS-SemiBold";
|
||||
font-weight: bold;
|
||||
}
|
||||
.oircoEgapp-head .top-menu .it-ct .it-1 {
|
||||
padding: 0.16rem 3.5% 0.2rem;
|
||||
border-bottom: 1px solid #e5e5e5;
|
||||
font-size: 14px;
|
||||
position: relative;
|
||||
}
|
||||
.oircoEgapp-head .top-menu .it-ct .it-1-more {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
padding-bottom: 1.5%;
|
||||
}
|
||||
.oircoEgapp-head .top-menu .it-ct .it-1-more i {
|
||||
font-weight: bold;
|
||||
}
|
||||
.oircoEgapp-head .top-menu .it-ct .it-1-2 {
|
||||
padding-left: 0.16rem;
|
||||
font-size: 13px;
|
||||
line-height: 1.8;
|
||||
font-weight: 100;
|
||||
font-weight: bold;
|
||||
display: none;
|
||||
}
|
||||
.oircoEgapp-head .top-menu .it-ct .it-1-2 a {
|
||||
color: #666;
|
||||
}
|
||||
.cursor_p span {
|
||||
font-size: 22px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
-webkit-line-clamp: 1;
|
||||
width: 100%;
|
||||
/* height: 1.2rem; */
|
||||
padding-left: 0.2rem;
|
||||
}
|
||||
.cursor_p span:hover {
|
||||
font-size:22px;
|
||||
white-space: normal;
|
||||
width: 100%;
|
||||
overflow: inherit;
|
||||
line-height: 1.5;
|
||||
}
|
||||
/* .cursor_p {
|
||||
height: 0.38rem !important;
|
||||
} */
|
||||
.img-responsive {
|
||||
display: flex !important;
|
||||
justify-content: center !important;
|
||||
align-items: center !important;
|
||||
}
|
||||
.img-responsive span {
|
||||
display: flex !important;
|
||||
align-items: center !important;
|
||||
}
|
||||
.action-sheet {
|
||||
border-top-left-radius: 10px;
|
||||
border-top-right-radius: 10px;
|
||||
display: none;
|
||||
background: #fff;
|
||||
width: 100%;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
z-index: 11111;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.menu-name {
|
||||
text-indent: 0.2rem;
|
||||
font-size: 14px;
|
||||
font-weight: 700;
|
||||
color: #000;
|
||||
}
|
||||
.action-sheet ul li {
|
||||
margin: 0 10px;
|
||||
color: #333;
|
||||
font-size: 12px;
|
||||
text-align: left;
|
||||
border-bottom: 1px solid #eee;
|
||||
padding: 12px 14px;
|
||||
}
|
||||
.action-sheet ul li a {
|
||||
color: #333;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
}
|
||||
.action-sheet ul li img {
|
||||
margin-right: 14px;
|
||||
}
|
||||
.menu-title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin: 0 10px;
|
||||
justify-content: space-between;
|
||||
background: #fff;
|
||||
border-top-left-radius: 6px;
|
||||
border-top-right-radius:6px;
|
||||
padding: 5px 0;
|
||||
}
|
||||
.close-icon {
|
||||
width: 24px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.close-icon img {
|
||||
width: 24px !important;
|
||||
}
|
||||
.title-text {
|
||||
padding-top: 0.24rem;
|
||||
color: #333;
|
||||
font-size: 14px;
|
||||
}
|
||||
.title-text p {
|
||||
line-height: 2;
|
||||
}
|
||||
.title-text p a {
|
||||
color: #989898;
|
||||
|
||||
}
|
||||
.title-text p a:hover {
|
||||
color: #989898;
|
||||
}
|
||||
.marsk-container {
|
||||
background: rgba(0, 0, 0, 0.8);
|
||||
display: none;
|
||||
position: absolute;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 0;
|
||||
left: 0;
|
||||
bottom: 0px;
|
||||
z-index: 9999;
|
||||
}
|
||||
.marsk-container-detail {
|
||||
background: rgba(0, 0, 0, 0.8);
|
||||
display: none;
|
||||
position: absolute;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 0;
|
||||
left: 0;
|
||||
bottom: 0px;
|
||||
z-index: 9999;
|
||||
}
|
||||
.search-in {
|
||||
margin-top:0.8rem;
|
||||
}
|
||||
.search-in input {
|
||||
width: 70% !important;
|
||||
height: 0.8rem;
|
||||
background: #ffffff;
|
||||
border: 1px solid #d6d6d6;
|
||||
opacity: 1;
|
||||
border-radius: 20px;
|
||||
padding: 0 14px;
|
||||
font-size: 14px;
|
||||
}
|
||||
::-webkit-input-placeholder {
|
||||
color: #989898;
|
||||
}
|
||||
.search-button {
|
||||
border: none;
|
||||
font-size: 14px;
|
||||
color: #fff;
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
cursor: pointer;
|
||||
background: #0060ff;
|
||||
height:0.7rem;
|
||||
border-radius: 20px;
|
||||
padding: 0 14px;
|
||||
width: 22%;
|
||||
}
|
||||
.search-in form{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
}
|
||||
.search-in .title-text p a{
|
||||
font-size: 14px;
|
||||
}
|
||||
/*头部搜索弹窗*/
|
||||
.popup-quick {
|
||||
width: 86%;
|
||||
background-color: #fff;
|
||||
z-index: 9999;
|
||||
box-shadow: 0px 2px 5px rgba(255, 255, 255, 0.2);
|
||||
color: #333;
|
||||
padding: 14px;
|
||||
border-radius: 5px;
|
||||
margin: 14px auto 0;
|
||||
position: relative;
|
||||
margin-top: 1rem;
|
||||
}
|
||||
42
public/static/index/mobile/css/topic_laptop/index.css
Normal file
@@ -0,0 +1,42 @@
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
html {
|
||||
width: 100% !important;
|
||||
overflow-x: hidden;
|
||||
margin: 0 !important;
|
||||
padding: 0 !important;
|
||||
max-width: 100vw !important;
|
||||
}
|
||||
body {
|
||||
width: 100%;
|
||||
background: #000;
|
||||
overflow-x: hidden;
|
||||
margin: 0 !important;
|
||||
padding: 0 !important;
|
||||
max-width: 100vw !important;
|
||||
}
|
||||
|
||||
.f36{
|
||||
font-size: 0.36rem !important;
|
||||
font-family: "HarmonyOS-Medium" !important;
|
||||
/* line-height: 1 !important; */
|
||||
}
|
||||
.f18{
|
||||
font-size: 0.18rem !important;
|
||||
line-height: 1.5 !important;
|
||||
}
|
||||
.lh1 {
|
||||
line-height: 1 !important;
|
||||
}
|
||||
.f28 {
|
||||
font-size: 0.28rem !important;
|
||||
font-family: "HarmonyOS-Medium" !important;
|
||||
}
|
||||
.f48 {
|
||||
font-size: 0.48rem !important;
|
||||
line-height: 1 !important;
|
||||
margin-bottom: 0.6rem !important;
|
||||
font-family: "HarmonyOS-Medium" !important;
|
||||
}
|
||||
43
public/static/index/mobile/css/topic_laptop/ips.css
Normal file
@@ -0,0 +1,43 @@
|
||||
.ips {
|
||||
position: relative;
|
||||
}
|
||||
.ips-t {
|
||||
font-size: 0.48rem;
|
||||
color: #fff;
|
||||
line-height: 1.5;
|
||||
margin-top: 1.5rem;
|
||||
margin-left: 0.38rem;
|
||||
margin-right: 0.38rem;
|
||||
margin-bottom: 0.46rem;
|
||||
}
|
||||
.ips-bg {
|
||||
aspect-ratio: 750/678;
|
||||
position: relative;
|
||||
}
|
||||
.ips-bg p {
|
||||
font-size: 0.20rem;
|
||||
color: #cbcfd8;
|
||||
line-height: 1.5;
|
||||
margin-left: 0.38rem;
|
||||
margin-right: 0.38rem;
|
||||
position: absolute;
|
||||
top: -0.3rem;
|
||||
}
|
||||
.ips-imgs {
|
||||
width: 6.8rem;
|
||||
flex-wrap: wrap;
|
||||
gap: 0.1rem;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
bottom: -3rem;
|
||||
display: flex;
|
||||
}
|
||||
.ips-imgs img {
|
||||
width: 3.35rem;
|
||||
display: block;
|
||||
}
|
||||
/* .ips-imgs img:nth-child(3),
|
||||
.ips-imgs img:nth-child(4) {
|
||||
margin-top: 0.1rem;
|
||||
} */
|
||||
37
public/static/index/mobile/css/topic_laptop/m2.css
Normal file
@@ -0,0 +1,37 @@
|
||||
.m2 {
|
||||
width: 100%;
|
||||
margin-top: 1.09rem;
|
||||
}
|
||||
.m2-bg {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
aspect-ratio: 750/846;
|
||||
}
|
||||
|
||||
.m2-bg-t1 {
|
||||
font-size: 0.48rem;
|
||||
color: #fff;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
line-height: 1.5;
|
||||
padding-top: 1.3rem;
|
||||
}
|
||||
.m2-bg-p {
|
||||
color: #CBCFD8ff;
|
||||
font-size: 0.18rem;
|
||||
padding-top:0.37rem;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
|
||||
}
|
||||
.m2-img-box {
|
||||
position: absolute;
|
||||
bottom: 0.66rem;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
gap: 0.11rem;
|
||||
}
|
||||
.m2-img-box img {
|
||||
width: 2.22rem;
|
||||
}
|
||||
39
public/static/index/mobile/css/topic_laptop/memory.css
Normal file
@@ -0,0 +1,39 @@
|
||||
.memory {
|
||||
width: 100%;
|
||||
}
|
||||
.memory-t {
|
||||
font-size: 0.48rem;
|
||||
color: #fff;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
padding-bottom: 0.37rem;
|
||||
line-height: 1.5;
|
||||
}
|
||||
.memory-img {
|
||||
width: 100%;
|
||||
aspect-ratio: 750/727;
|
||||
position: relative;
|
||||
}
|
||||
.memory-p {
|
||||
width: 100%;
|
||||
font-size: 0.20rem;
|
||||
color: #cbcfd8;
|
||||
text-align: center;
|
||||
line-height: 1.5;
|
||||
}
|
||||
.memory-footer-img {
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
bottom: -0.74rem;
|
||||
width: 6.83rem;
|
||||
}
|
||||
.memory-footer-img p {
|
||||
height:0;
|
||||
}
|
||||
.memory-footer-img img {
|
||||
width: 6.83rem;
|
||||
|
||||
display: block;
|
||||
aspect-ratio: 683/148;
|
||||
}
|
||||
129
public/static/index/mobile/css/topic_laptop/progress.css
Normal file
@@ -0,0 +1,129 @@
|
||||
.progress {
|
||||
margin-left: 0.34rem;
|
||||
margin-right: 0.34rem;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
/* .progress-section {
|
||||
margin-left: 0.34rem;
|
||||
margin-right: 0.34rem;
|
||||
box-sizing: border-box;
|
||||
} */
|
||||
|
||||
.progress-title {
|
||||
font-size: 0.24rem;
|
||||
color: #fff;
|
||||
padding: 0.16rem 0 0.36rem 0;
|
||||
font-family: 'HarmonyOS-Medium';
|
||||
}
|
||||
.progress-item .label {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: baseline;
|
||||
line-height: 1;
|
||||
margin-top: 0.13rem;
|
||||
margin-bottom: 0.36rem;
|
||||
}
|
||||
|
||||
.progress-item .label .device-name {
|
||||
flex: 1;
|
||||
font-family: 'HarmonyOS-Medium';
|
||||
margin-left: 0.04rem;
|
||||
}
|
||||
|
||||
.progress-item .label .value {
|
||||
text-align: right;
|
||||
font-family: 'HarmonyOS-Medium';
|
||||
margin-right: 0.04rem;
|
||||
}
|
||||
|
||||
.colorLinearGradient {
|
||||
background: linear-gradient(90deg, #7e51ff, #d5dfff);
|
||||
-webkit-background-clip: text;
|
||||
background-clip: text;
|
||||
color: transparent;
|
||||
}
|
||||
|
||||
.progress-item .label .value.m4-max {
|
||||
color: #5e5ce6;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
flex: 1;
|
||||
height: 0.1rem;
|
||||
max-height: 0.2rem;
|
||||
min-height: 0.1rem;
|
||||
border-radius: 0.1rem;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
/* 性能优化1:开启硬件加速,减少重绘 */
|
||||
transform: translateZ(0);
|
||||
will-change: transform;
|
||||
}
|
||||
|
||||
.progress-fill {
|
||||
height: 100%;
|
||||
border-radius: 0.05rem;
|
||||
transform: scaleX(0);
|
||||
transform-origin: left center;
|
||||
transition: transform 1.2s ease-out;
|
||||
will-change: transform;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
/* 保留你所有原始的进度条颜色类 */
|
||||
.progress-fill.m4-max {
|
||||
background: linear-gradient(40deg, #7e51ff, #e1d5ff);
|
||||
}
|
||||
|
||||
.progress-fill.m2-max {
|
||||
background: #bfc5d9;
|
||||
}
|
||||
|
||||
@keyframes shimmer {
|
||||
100% {
|
||||
left: 150%;
|
||||
}
|
||||
}
|
||||
|
||||
.font20 {
|
||||
font-size: 0.2rem !important;
|
||||
}
|
||||
.font18 {
|
||||
font-size: 0.18rem !important;
|
||||
}
|
||||
.colorCBCFD8 {
|
||||
color: #646778 !important;
|
||||
}
|
||||
|
||||
.progress-p {
|
||||
color: #cbcfd8;
|
||||
font-size: 0.18rem;
|
||||
margin-top: 0.51rem;
|
||||
margin-bottom: 1.5rem;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.progress-p1 {
|
||||
color: #cbcfd8;
|
||||
font-size: 0.18rem;
|
||||
margin-top: 1.56rem;
|
||||
text-align: center;
|
||||
}
|
||||
.w645 {
|
||||
width: 6.45rem;
|
||||
}
|
||||
.w585 {
|
||||
width: 5.85rem;
|
||||
}
|
||||
.w454 {
|
||||
width: 4.54rem;
|
||||
}
|
||||
.w321 {
|
||||
width: 3.21rem;
|
||||
}
|
||||
.w596 {
|
||||
width: 5.96rem;
|
||||
}
|
||||
.w467 {
|
||||
width: 4.67rem;
|
||||
}
|
||||
25
public/static/index/mobile/css/topic_laptop/qb.css
Normal file
@@ -0,0 +1,25 @@
|
||||
/* .qb {
|
||||
position: absolute;
|
||||
top:3rem;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
} */
|
||||
.qb-t {
|
||||
width: 100%;
|
||||
font-size: 0.48rem;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
padding-top: 1.5rem;
|
||||
}
|
||||
.qb-p {
|
||||
font-size: 0.20rem;
|
||||
color: #cbcfd8;
|
||||
text-align: center;
|
||||
padding-top: 0.37rem;
|
||||
padding-bottom: 0.34rem;
|
||||
font-family: 'HarmonyOS-Light';
|
||||
line-height: 1.5;
|
||||
}
|
||||
.qb-bg-img1 {
|
||||
width: 6.9rem;
|
||||
}
|
||||
28
public/static/index/mobile/css/topic_laptop/rgb.css
Normal file
@@ -0,0 +1,28 @@
|
||||
.rgb-t {
|
||||
font-size: 0.48rem;
|
||||
color: #fff;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
margin-top: 4.84rem;
|
||||
margin-bottom: 0.37rem;
|
||||
line-height: 1.5;
|
||||
}
|
||||
.rgb-bg {
|
||||
aspect-ratio: 750/582;
|
||||
}
|
||||
.rgb-p {
|
||||
font-size: 0.20rem;
|
||||
color: #cbcfd8;
|
||||
line-height: 1.5;
|
||||
text-align: center;
|
||||
}
|
||||
.rgb-imgs {
|
||||
display: flex;
|
||||
gap: 0.1rem;
|
||||
margin-top: 0.28rem;
|
||||
justify-content: center;
|
||||
}
|
||||
.rgb-imgs img {
|
||||
width: 2.17rem;
|
||||
display: block;
|
||||
}
|
||||
86
public/static/index/mobile/css/topic_laptop/swiper.css
Normal file
@@ -0,0 +1,86 @@
|
||||
/* 轮播容器 - 核心:基于视口高度自适应 */
|
||||
.auto-swiper-container {
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
/* 轮播项 - 填充容器高度 */
|
||||
.auto-swiper-slide {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
/* 图片自适应核心:填充屏幕比例高度,保持比例 */
|
||||
.auto-swiper-slide img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover; /* 优先填充容器,裁剪超出部分(无拉伸) */
|
||||
/* object-fit: contain; 可选:完整显示图片,不裁剪(可能留黑边) */
|
||||
display: block;
|
||||
}
|
||||
.swiper-container-texts {
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 1.2rem;
|
||||
transform: translateX(-50%);
|
||||
z-index: 10;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.swiper-container-texts-t {
|
||||
font-size: 0.48rem;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
line-height: 1;
|
||||
}
|
||||
.swiper-container-texts-p {
|
||||
padding-top: 0.54rem;
|
||||
font-size: 0.16rem;
|
||||
/* text-align: center; */
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
/* letter-spacing: px; */
|
||||
justify-content: center;
|
||||
}
|
||||
.swiper-container-texts-p div {
|
||||
font-family: 'HarmonyOS-Light';
|
||||
}
|
||||
.swiper-container-texts-line {
|
||||
width: 1px;
|
||||
height: 0.16rem;
|
||||
background: #fff;
|
||||
margin: 0 12px;
|
||||
}
|
||||
.swiper-container-texts-img {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
padding-top: 0.54rem;
|
||||
cursor: pointer;
|
||||
}
|
||||
.swiper-container-texts-img a {
|
||||
width: 100%;
|
||||
max-width: 1.18rem;
|
||||
}
|
||||
.swiper-container-texts-img img {
|
||||
width: 100%;
|
||||
max-width: 1.18rem;
|
||||
}
|
||||
.swiper-slide-t {
|
||||
padding-top: 0.3rem;
|
||||
font-size: 0.2rem;
|
||||
text-align: center;
|
||||
color: #fff;
|
||||
}
|
||||
.swiper-slide-p {
|
||||
font-size: 0.16rem;
|
||||
color: #cbcfd8;
|
||||
text-align: center;
|
||||
margin-top: 0.18rem;
|
||||
}
|
||||
105
public/static/index/mobile/css/topic_laptop/tabs.css
Normal file
@@ -0,0 +1,105 @@
|
||||
.tabs-container {
|
||||
width: 6.03rem;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.tabs-header-box {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
margin-top: 0.48rem;
|
||||
}
|
||||
.tabs-header {
|
||||
display: inline-flex;
|
||||
/* 改为inline-flex,宽度由子元素决定 */
|
||||
position: relative;
|
||||
border-bottom: 1px solid #909399;
|
||||
margin: 0 auto;
|
||||
width: 1.75rem;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.tab-item {
|
||||
/* padding: 12px 24px; */
|
||||
font-size: 0.18rem;
|
||||
cursor: pointer;
|
||||
transition: color 0.2s ease;
|
||||
white-space: nowrap;
|
||||
color: #cbcfd8;
|
||||
flex: 1;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.tab-item {
|
||||
margin-bottom: 0.08rem;
|
||||
}
|
||||
|
||||
.tab-indicator {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
height:1px;
|
||||
background-color: #fff;
|
||||
transform: translateX(0);
|
||||
width: auto;
|
||||
transition: transform 0.3s cubic-bezier(0.25, 0.1, 0.25, 1),
|
||||
width 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);
|
||||
will-change: transform, width;
|
||||
backface-visibility: hidden;
|
||||
perspective: 1000px;
|
||||
}
|
||||
|
||||
.tab-content {
|
||||
width: 6.03rem;
|
||||
width: 6.03rem;
|
||||
/* min-width: 1280px; */
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.content-video {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
border-radius: 8px;
|
||||
}
|
||||
.tabs-p {
|
||||
width: 100%;
|
||||
font-size: 0.18rem;
|
||||
color: #cbcfd8;
|
||||
text-align: center;
|
||||
margin-top: 0.48rem;
|
||||
display: none;
|
||||
}
|
||||
.tabs-p.active {
|
||||
display: block;
|
||||
}
|
||||
.tab-panel {
|
||||
display: none;
|
||||
}
|
||||
.tab-panel-img {
|
||||
background: #1c1c1e;
|
||||
width: 5.77rem;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
border-radius: 0.16rem;
|
||||
}
|
||||
.tab-panel-img img {
|
||||
width: 5.77rem;
|
||||
}
|
||||
.tab-panel.active {
|
||||
display: block;
|
||||
}
|
||||
.tab-t {
|
||||
font-size: 0.48rem;
|
||||
color: #cbcfd8;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
margin-top: 1.5rem;
|
||||
margin-bottom: 0.7rem;
|
||||
display: none;
|
||||
}
|
||||
.tab-t.active {
|
||||
display: block;
|
||||
}
|
||||
/* .tab-ts {
|
||||
margin-top: 2.97rem;
|
||||
margin-bottom: 1rem;
|
||||
} */
|
||||
37
public/static/index/mobile/css/topic_laptop/wift.css
Normal file
@@ -0,0 +1,37 @@
|
||||
.wifi {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
aspect-ratio: 750/595;
|
||||
margin-top: 3.45rem;
|
||||
}
|
||||
.wifi-texts {
|
||||
position: absolute;
|
||||
top: -2.3rem;
|
||||
left: 0.42rem;
|
||||
width: 100%;
|
||||
}
|
||||
.wifi-t {
|
||||
width: 100%;
|
||||
font-size: 0.48rem;
|
||||
color: #fff;
|
||||
line-height: 1.5;
|
||||
}
|
||||
.wifi-p {
|
||||
font-size: 0.20rem;
|
||||
color: #cbcfd8;
|
||||
padding-top: 0.37rem;
|
||||
line-height: 1.4;
|
||||
font-family: 'HarmonyOS-Light';
|
||||
}
|
||||
.wifi-img {
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
bottom: -0.22rem;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
gap: 0.1rem;
|
||||
}
|
||||
.wifi-img img {
|
||||
width: 3.35rem;
|
||||
display: block;
|
||||
}
|
||||
9
public/static/index/mobile/css/topic_laptop/window.css
Normal file
@@ -0,0 +1,9 @@
|
||||
.window {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
margin-top: 1.5rem;
|
||||
}
|
||||
.window img {
|
||||
width: 6.8rem;
|
||||
}
|
||||
64
public/static/index/mobile/css/topic_laptop/xn.css
Normal file
@@ -0,0 +1,64 @@
|
||||
.xn-container {
|
||||
width: 6.8rem;
|
||||
margin: 0 auto;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
/* 图片容器样式(核心) */
|
||||
.xn-image-section {
|
||||
overflow: hidden;
|
||||
border-radius: 0.16rem;
|
||||
background: #0d0c10;
|
||||
border: 1px solid #3f3f45;
|
||||
width: 6.8rem;
|
||||
}
|
||||
|
||||
.zoom-image {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
display: block;
|
||||
/* 调整transform过渡时间为2s,opacity为1.5s,可按需修改 */
|
||||
transition: transform 2s cubic-bezier(0.25, 0.1, 0.25, 1), opacity 1.5s ease;
|
||||
transform: scale(0.8);
|
||||
/* 初始缩放比例 */
|
||||
opacity: 0.9;
|
||||
/* 初始透明度(略暗,放大后变亮) */
|
||||
}
|
||||
|
||||
/* 滚动触发后的放大状态 */
|
||||
.zoom-image.active {
|
||||
transform: scale(1.1);
|
||||
/* 放大5%(官网常用比例,不夸张) */
|
||||
opacity: 1;
|
||||
}
|
||||
.xn-t {
|
||||
font-size: 0.48rem;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
margin-top: 1.5rem;
|
||||
margin-bottom: 0.6rem;
|
||||
|
||||
}
|
||||
.xn-p {
|
||||
padding-top: 0.6rem;
|
||||
font-size: 0.16rem;
|
||||
margin-left: 0.47rem;
|
||||
}
|
||||
.xn-p p {
|
||||
width: 5.84rem;
|
||||
color: #cbcfd8;
|
||||
line-height: 1.5;
|
||||
/* 核心:左内边距控制第二行缩进量 */
|
||||
padding-left: 0.8rem;
|
||||
/* 首行向左偏移,抵消左内边距,实现第二行缩进 */
|
||||
text-indent: -0.8rem;
|
||||
/* 确保p标签是块级,且换行正常 */
|
||||
display: block;
|
||||
word-wrap: break-word;
|
||||
white-space: nowrap;
|
||||
/* 2. 超出元素宽度的内容隐藏 */
|
||||
overflow: hidden;
|
||||
/* 3. 将超出的文本替换为省略号... */
|
||||
text-overflow: ellipsis;
|
||||
/* 可选:给元素设置一个固定宽度(确保省略效果生效) */
|
||||
}
|
||||
122
public/static/index/mobile/css/topic_laptop/zoom.css
Normal file
@@ -0,0 +1,122 @@
|
||||
/* 图片容器:100vw宽,最小宽度1440px,按图片原始比例(2560:1857)定高 */
|
||||
.zoom-container {
|
||||
width: 7.5rem;
|
||||
height: 6.05rem;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
/* 图片包裹层:与容器同尺寸,定位参考系,承接缩放变换 */
|
||||
.img-wrapper {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
/* z-index: -10; */
|
||||
}
|
||||
|
||||
/* 图片:按原始比例填充包裹层,不裁切,初始放大+过渡动画 */
|
||||
.bg-img {
|
||||
width: 7.5rem;
|
||||
height: 6.05rem;
|
||||
display: block;
|
||||
transform: scale(1.5);
|
||||
transition: transform 1.8s ease;
|
||||
transform-origin: center center;
|
||||
}
|
||||
|
||||
/* 图片缩小后的状态 */
|
||||
.bg-img.zoom-out {
|
||||
transform: scale(1);
|
||||
}
|
||||
|
||||
/* 标注样式:关键修正 - 基于容器绝对定位,百分比参考图片原始比例 */
|
||||
.annotation {
|
||||
position: absolute;
|
||||
color: #fff;
|
||||
font-size: calc(12px + 0.3vw);
|
||||
opacity: 0;
|
||||
transform: translateY(calc(10px + 0.5vw));
|
||||
transition: opacity 0.8s ease, transform 0.8s ease;
|
||||
pointer-events: none;
|
||||
z-index: 10;
|
||||
white-space: nowrap;
|
||||
/* 关键:标注的定位参考系是容器(与图片同比例),而非缩放后的图片 */
|
||||
top: 0;
|
||||
left: 0;
|
||||
/* 重置默认值,依赖内联style的百分比定位 */
|
||||
}
|
||||
|
||||
/* 标注显示状态 */
|
||||
.annotation.anno-show {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
}
|
||||
|
||||
.annotation span {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
/* 确保文字居中对齐 */
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* 标注线条样式:基于文字定位,适配缩放 */
|
||||
.annotation span::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
width: 0.01rem;
|
||||
height: 0;
|
||||
bottom: calc(100% + 6px);
|
||||
background-color: #fff;
|
||||
transition: height 0.8s ease;
|
||||
transform-origin: bottom center;
|
||||
}
|
||||
/* 向上延伸的标注线条(给需要向上的.annotation加anno-up类) */
|
||||
.annotation.anno-up span::before {
|
||||
/* 把线条位置从文字下方,改成文字上方 */
|
||||
bottom: auto;
|
||||
top: 0.3rem; /* 定位到文字顶部外 */
|
||||
/* 线条方向改为向上延伸 */
|
||||
transform-origin: top center;
|
||||
}
|
||||
.annotation.anno-up1 span::before {
|
||||
/* 把线条位置从文字下方,改成文字上方 */
|
||||
bottom: auto;
|
||||
top: 0.5rem; /* 定位到文字顶部外 */
|
||||
/* 线条方向改为向上延伸 */
|
||||
transform-origin: top center;
|
||||
}
|
||||
/* 标注显示时,设置线条最终高度 */
|
||||
.annotation.anno-show span::before {
|
||||
height: 0.57rem;
|
||||
}
|
||||
|
||||
.zoom-t {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
font-size: 0.48rem;
|
||||
color: #fff;
|
||||
padding-top: 1.5rem;
|
||||
}
|
||||
.zoom-p {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
font-size: 0.20rem;
|
||||
color: #cbcfd8;
|
||||
position: absolute;
|
||||
top: 0.37rem;
|
||||
z-index: 10;
|
||||
line-height: 1.5;
|
||||
font-family: 'HarmonyOS-Light';
|
||||
}
|
||||
|
||||
/* 标注延迟类 */
|
||||
.anno-delay-1 {
|
||||
transition-delay: 0.8s;
|
||||
}
|
||||
.anno-delay-1 span::before {
|
||||
transition-delay: 0.8s;
|
||||
}
|
||||
@@ -0,0 +1,143 @@
|
||||
/* 核心模块:固定90%宽度(PC端),优化移动端边距 */
|
||||
.advantage-section {
|
||||
width: 93.5%;
|
||||
margin: 0 auto;
|
||||
padding-top:0.99rem;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
height: auto !important;
|
||||
min-height: auto !important;
|
||||
margin-bottom: 0.51rem;
|
||||
}
|
||||
|
||||
/* 标题容器:恢复原有居中样式 */
|
||||
.advantage-section__title {
|
||||
font-size: 0.46rem;
|
||||
font-weight: 700;
|
||||
text-align: center;
|
||||
color: #101010;
|
||||
margin:0 auto;
|
||||
margin-bottom: 0.51rem;
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
/* 列表容器:改为wrap换行,实现2+3布局,间距设为0.08rem(8px) */
|
||||
.advantage-section__list {
|
||||
display: flex;
|
||||
justify-content: flex-start; /* 左对齐排列 */
|
||||
align-items: flex-start;
|
||||
gap: 0.08rem; /* 列间距:设计稿8px=0.08rem */
|
||||
row-gap: 0.08rem; /* 行间距:设计稿8px=0.08rem */
|
||||
width: 100% !important;
|
||||
flex-wrap: wrap; /* 允许换行 */
|
||||
overflow: visible !important;
|
||||
padding: 0 !important;
|
||||
height: auto !important;
|
||||
min-height: 1px !important;
|
||||
position: relative !important;
|
||||
}
|
||||
|
||||
/* 卡片包裹容器:动态宽度控制 */
|
||||
.advantage-card-wrap {
|
||||
display: block !important;
|
||||
height: auto !important;
|
||||
min-height: 1px !important;
|
||||
}
|
||||
|
||||
/* 第一行2个卡片:宽度=(100% - 1个间距)/2 */
|
||||
.advantage-card-wrap:nth-child(1),
|
||||
.advantage-card-wrap:nth-child(2) {
|
||||
width: calc((100% - 0.08rem) / 2) !important;
|
||||
}
|
||||
|
||||
/* 第二行3个卡片:宽度=(100% - 2个间距)/3 */
|
||||
.advantage-card-wrap:nth-child(3),
|
||||
.advantage-card-wrap:nth-child(4),
|
||||
.advantage-card-wrap:nth-child(5) {
|
||||
width: calc((100% - 2 * 0.08rem) / 3) !important;
|
||||
}
|
||||
|
||||
/* 卡片核心:宽度继承父容器,高度自适应 */
|
||||
.advantage-card {
|
||||
width: 100% !important;
|
||||
overflow: hidden;
|
||||
box-shadow: 0 0.125rem 0.5rem rgba(0, 0, 0, 0.1);
|
||||
transition: transform 0.3s ease;
|
||||
cursor: pointer;
|
||||
background: #fff;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
height: auto !important;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
border-radius: 0.1rem 0.1rem 0 0 !important;
|
||||
}
|
||||
|
||||
/* 图片容器:保持1:1比例 */
|
||||
.advantage-card__img {
|
||||
width: 100%;
|
||||
aspect-ratio: 1 / 1; /* 1:1比例 */
|
||||
object-fit: cover;
|
||||
background-color: #f9f9f9;
|
||||
display: block;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
/* 文字区域:保持内边距和布局,内部间距也调整为0.08rem */
|
||||
.advantage-card__content {
|
||||
width: 100%;
|
||||
padding: 0.4rem 0.23rem 0.31rem 0.2rem; /* 上下内边距 */
|
||||
gap: 0.08rem; /* 内部元素间距:设计稿8px=0.08rem */
|
||||
}
|
||||
|
||||
/* 标题容器:间距设为0.08rem(8px) */
|
||||
.advantage-card__heading-wrap {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 0.08rem; /* 设计稿8px=0.08rem */
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* 卡片标题:字体大小调整 */
|
||||
.advantage-card__heading {
|
||||
font-size: 0.34rem;
|
||||
font-weight: 600;
|
||||
color: #101010;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap; /* 强制不换行 */
|
||||
overflow: hidden; /* 超出隐藏 */
|
||||
text-overflow: ellipsis; /* 显示省略号 */
|
||||
}
|
||||
|
||||
/* 描述文字样式 */
|
||||
.advantage-card__description {
|
||||
font-size: 0.24rem;
|
||||
color:#666666;
|
||||
margin-top: 0.08rem; /* 与标题间距:设计稿8px=0.08rem */
|
||||
white-space: nowrap; /* 强制不换行 */
|
||||
overflow: hidden; /* 超出隐藏 */
|
||||
text-overflow: ellipsis; /* 显示省略号 */
|
||||
}
|
||||
|
||||
/* 箭头大小 */
|
||||
.card-arrow {
|
||||
transition: transform 0.3s ease;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 0.33rem;
|
||||
height: 0.33rem;
|
||||
}
|
||||
|
||||
/* 卡片hover效果 */
|
||||
/* .advantage-card:hover {
|
||||
transform: scale(1.03);
|
||||
} */
|
||||
|
||||
/* 箭头hover位移 */
|
||||
.advantage-card:hover .card-arrow {
|
||||
transform: translateX(0.03rem);
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
.prodline-footer-box{
|
||||
width: 100%;
|
||||
/* padding: 3rem 0; */
|
||||
}
|
||||
.prodline-footer-box-img {
|
||||
width: 93.5%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.prodline-footer-box-img img {
|
||||
width: 100%;
|
||||
}
|
||||
165
public/static/index/mobile/css/topic_power_prodline/index.css
Normal file
@@ -0,0 +1,165 @@
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
/* 1. 根字体适配:限制最小根字体为14px,从源头避免文字过小 */
|
||||
/* html {
|
||||
|
||||
font-size: 16px;
|
||||
} */
|
||||
|
||||
/* 平板端(768px~1023px):15px→16px(过渡,最小15px) */
|
||||
@media (max-width: 1024px) and (min-width: 768px) {
|
||||
/* html {
|
||||
font-size: calc(15px + (16 - 15) * (100vw - 768px) / (1023 - 768));
|
||||
} */
|
||||
html body {
|
||||
margin: 0 !important;
|
||||
padding: 0 !important;
|
||||
width:100vw !important;
|
||||
max-width: 100vw !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* 移动端(320px~767px):固定14px(不随屏幕缩小而变小,避免文字<12px) */
|
||||
@media (max-width: 767px) {
|
||||
/* html {
|
||||
font-size: 14px;
|
||||
|
||||
} */
|
||||
html body {
|
||||
margin: 0 !important;
|
||||
padding: 0 !important;
|
||||
width:100vw !important;
|
||||
max-width: 100vw !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* 超小屏(≤320px):仍固定14px,彻底杜绝文字过小 */
|
||||
@media (max-width: 320px) {
|
||||
/* html {
|
||||
font-size: 14px;
|
||||
} */
|
||||
html body {
|
||||
margin: 0 !important;
|
||||
padding: 0 !important;
|
||||
width:100vw !important;
|
||||
max-width: 100vw !important;
|
||||
}
|
||||
}
|
||||
body {
|
||||
background: rgb(242, 243, 245);
|
||||
/* margin:0 !important; */
|
||||
}
|
||||
a {
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
}
|
||||
|
||||
|
||||
.header {
|
||||
width: 100%;
|
||||
background: #fff;
|
||||
height: 60px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.header-img {
|
||||
margin: 0 auto;
|
||||
width: 90%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
}
|
||||
/* 强制设置根元素font-size,优先级最高(!important确保覆盖所有冲突) */
|
||||
html {
|
||||
font-size: inherit !important; /* 继承内联样式的50px,而非浏览器默认值 */
|
||||
-webkit-text-size-adjust: none !important; /* 禁止iOS自动调整字体大小 */
|
||||
}
|
||||
.oircoEgapp-foot .logo-white img {
|
||||
margin: 0 auto;
|
||||
}
|
||||
.oircoEgapp-foot .m_footer {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.oircoEgapp-foot .m_footer .left,
|
||||
.oircoEgapp-foot .foot-con {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
}
|
||||
.oircoEgapp-foot .m_footer .right {
|
||||
max-width: 55%;
|
||||
}
|
||||
.oircoEgapp-foot .m_footer .left {
|
||||
max-width: 40%;
|
||||
justify-content: end;
|
||||
margin-right: 4%;
|
||||
}
|
||||
.oircoEgapp-foot .foot-con span {
|
||||
width: auto;
|
||||
padding: 0 0.625rem;
|
||||
}
|
||||
.oircoEgapp-foot .foot-cate .clearfix li h3 {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.oircoEgapp-foot .foot-cate .clearfix li p,
|
||||
.oircoEgapp-foot .foot-cate .clearfix li p a {
|
||||
font-size: 12px;
|
||||
}
|
||||
.logo-white {
|
||||
text-align: center;
|
||||
padding: 1rem 0 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.foot-cate {
|
||||
padding: 0 0.16rem;
|
||||
}
|
||||
.foot-cate h3 {
|
||||
font-size: 0.28rem;
|
||||
}
|
||||
.foot-cate li {
|
||||
padding: 0.7rem 0;
|
||||
min-height: 1.8rem;
|
||||
}
|
||||
.foot-cate li p {
|
||||
line-height: 0.8rem;
|
||||
}
|
||||
.m_footer .right {
|
||||
float: right;
|
||||
width: 57%;
|
||||
text-align: left;
|
||||
}
|
||||
.foot-con span {
|
||||
font-size:0.28rem;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
-webkit-line-clamp: 1;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
cursor: pointer;
|
||||
font-family: 'HarmonyOS-Medium';
|
||||
}
|
||||
.oircoEgapp-foot .foot-con span {
|
||||
width: auto;
|
||||
padding: 0 0.125rem;
|
||||
}
|
||||
.m_footer .left a{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.m_footer .left img {
|
||||
width: 0.7rem;
|
||||
padding-right: 0.2rem;
|
||||
padding-top: 0;
|
||||
}
|
||||
.oircoEgapp-foot .m_footer .right {
|
||||
max-width: 50%;
|
||||
}
|
||||
79
public/static/index/mobile/css/topic_power_prodline/mask.css
Normal file
@@ -0,0 +1,79 @@
|
||||
/* 蒙版样式 - 新增触摸事件禁止 */
|
||||
.mask {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: rgba(0, 0, 0, 0.7);
|
||||
display: none;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
z-index: 9999;
|
||||
overflow: hidden; /* 阻止蒙版自身滚动 */
|
||||
touch-action: none; /* 禁止触摸行为 */
|
||||
pointer-events: auto; /* 确保蒙版能接收事件 */
|
||||
}
|
||||
|
||||
/* 蒙版内容容器 - 新增触摸事件传递控制 */
|
||||
.mask-content {
|
||||
width: 80%;
|
||||
height: 100%;
|
||||
background: rgb(242, 243, 245);
|
||||
border-radius: 12px;
|
||||
overflow: hidden; /* 内容容器不滚动 */
|
||||
position: relative;
|
||||
animation: popIn 0.3s ease;
|
||||
max-height: 90vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
pointer-events: auto; /* 确保内容区域能正常交互 */
|
||||
}
|
||||
|
||||
/* 滚动内容容器 - 保持不变 */
|
||||
.mask-scroll-content {
|
||||
flex: 1;
|
||||
overflow-y: auto;
|
||||
padding: 20px;
|
||||
-webkit-overflow-scrolling: touch; /* 移动端顺滑滚动 */
|
||||
}
|
||||
|
||||
/* 升级:同时禁止 html 和 body 滚动(关键兼容) */
|
||||
.no-scroll {
|
||||
overflow: hidden !important;
|
||||
position: fixed !important;
|
||||
width: 100% !important;
|
||||
height: 100% !important;
|
||||
}
|
||||
|
||||
/* 其他原有样式保持不变 */
|
||||
@keyframes popIn {
|
||||
from {
|
||||
transform: scale(0.8);
|
||||
opacity: 0;
|
||||
}
|
||||
to {
|
||||
transform: scale(1);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
.close-btn {
|
||||
position: absolute;
|
||||
top: 20px;
|
||||
right: 20px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
background-color: rgba(0, 0, 0, 0.3);
|
||||
border-radius: 50%;
|
||||
color: #fff;
|
||||
font-size: 20px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
transition: background-color 0.3s ease;
|
||||
z-index: 10;
|
||||
}
|
||||
.close-btn:hover {
|
||||
background-color: #ff4d4f;
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
.more {
|
||||
width: 93.5%;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
padding-top: 0.33rem;
|
||||
|
||||
}
|
||||
.more:nth-child(5) {
|
||||
padding-top: 0.33rem;
|
||||
padding-bottom: 0.79rem;
|
||||
}
|
||||
.more-img {
|
||||
background: #000;
|
||||
color: #fff;
|
||||
font-size: 0.21rem;
|
||||
width: 1.54rem;
|
||||
height: 0.5rem;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
border-radius: 0.5rem;
|
||||
}
|
||||
.line {
|
||||
width: 100%;
|
||||
height:0.14rem;
|
||||
}
|
||||
43
public/static/index/mobile/css/topic_power_prodline/nav.css
Normal file
@@ -0,0 +1,43 @@
|
||||
/* 设计稿750px → 1rem=100px,所有尺寸按设计稿÷100换算 */
|
||||
.nav-box {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
width: 93.5%;
|
||||
margin: 0 auto;
|
||||
background-color: #fff;
|
||||
border-radius: 3.125rem; /* 设计稿312.5px */
|
||||
box-shadow: 0 0.125rem 0.9375rem rgba(0, 0, 0, 0.05); /* 设计稿12.5px/93.75px */
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
overflow: visible;
|
||||
padding: 0 0.42rem; /* 设计稿42px(左右内边距取中间值) */
|
||||
/* min-height: fit-content; */
|
||||
/* height:0.86rem; */
|
||||
box-sizing: border-box;
|
||||
padding-bottom: 0.2rem;
|
||||
}
|
||||
|
||||
.nav-item {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
flex: 1;
|
||||
margin-top: -0.5rem;
|
||||
text-align: center;
|
||||
|
||||
align-self: flex-start;
|
||||
}
|
||||
|
||||
.nav-item img {
|
||||
width: 0.94rem; /* 设计稿80px(示例图片尺寸,可按实际调整) */
|
||||
height: 0.94rem;
|
||||
margin-bottom: 0.15rem; /* 设计稿10px(图片与文字间距) */
|
||||
}
|
||||
|
||||
.nav-item p {
|
||||
|
||||
font-size: 0.22rem; /* 设计稿16px(文字大小) */
|
||||
|
||||
margin: 0;
|
||||
}
|
||||
149
public/static/index/mobile/css/topic_power_prodline/product.css
Normal file
@@ -0,0 +1,149 @@
|
||||
/* 设计稿750px → 1rem=100px,所有尺寸按设计稿÷100换算 */
|
||||
.product-box {
|
||||
background: #fff;
|
||||
padding-top: 0.93rem;
|
||||
}
|
||||
|
||||
.product-title {
|
||||
width: 93.5%;
|
||||
margin: 0 auto;
|
||||
padding-bottom: 0.83rem;
|
||||
}
|
||||
|
||||
.product-title-h2 {
|
||||
font-size: 0.46rem;
|
||||
}
|
||||
|
||||
.product-title-p {
|
||||
font-size: 0.24rem;
|
||||
color: #646464;
|
||||
margin-top: 0.21rem;
|
||||
}
|
||||
|
||||
/* 容器布局:改为上下结构(右侧在上,左侧在下) */
|
||||
.product-container {
|
||||
display: flex;
|
||||
flex-direction: column-reverse;
|
||||
gap: 0.1rem; /* 上下间距 */
|
||||
margin: 0 auto;
|
||||
width: 93.5%;
|
||||
align-items: stretch; /* 宽度铺满 */
|
||||
}
|
||||
|
||||
/* 右侧容器:移到上方 */
|
||||
.product-right {
|
||||
flex: none; /* 取消flex比例,自适应高度 */
|
||||
position: relative;
|
||||
border-radius: 0.1rem;
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
background-color: #f5f5f5;
|
||||
min-height: 1.94rem;
|
||||
aspect-ratio: 16/9;
|
||||
}
|
||||
|
||||
/* 左侧容器:移到下方 */
|
||||
.product-left {
|
||||
flex: none; /* 取消flex比例,自适应高度 */
|
||||
position: relative;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.product-img {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
border-radius: 0.1rem;
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* 第二个产品:悬浮图位置调整(适配下方布局) */
|
||||
.product-img-2 {
|
||||
top: auto; /* 取消顶部定位 */
|
||||
bottom: -0.8rem; /* 底部超出 */
|
||||
transform: none;
|
||||
width: 1.08rem;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.right-content {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
transition: opacity 0.3s ease;
|
||||
}
|
||||
|
||||
.right-video {
|
||||
display: none;
|
||||
}
|
||||
.video-play-btn {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
background: none;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
opacity: 0;
|
||||
transition: opacity 0.3s ease;
|
||||
z-index: 2;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.play-icon {
|
||||
display: inline-block;
|
||||
}
|
||||
.pause-icon {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.video-play-btn.paused .play-icon {
|
||||
display: none;
|
||||
}
|
||||
.video-play-btn.paused .pause-icon {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.right-video[playing] ~ .video-play-btn,
|
||||
.product-right:hover .video-play-btn {
|
||||
opacity: 1;
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* 悬浮图容器:适配下方布局 */
|
||||
.product-img-hover {
|
||||
width: auto;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
z-index: 33;
|
||||
}
|
||||
.right {
|
||||
|
||||
right: -0.3rem;
|
||||
|
||||
}
|
||||
/* 图片尺寸统一用rem */
|
||||
.img1, .img2, .img3, .img4, .img5 {
|
||||
width: 3.56rem;
|
||||
max-width: 3.56rem;
|
||||
}
|
||||
|
||||
.img1 {
|
||||
max-width: 2.76rem;
|
||||
}
|
||||
.img2 {
|
||||
max-width: 2.7rem;
|
||||
}
|
||||
.img3 {
|
||||
max-width: 2.84rem;
|
||||
}
|
||||
.img4 {
|
||||
max-width: 2.5rem;
|
||||
}
|
||||
.img5 {
|
||||
max-width: 2.68rem;
|
||||
}
|
||||
@@ -0,0 +1,206 @@
|
||||
.product-card-container2 {
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
gap: 10px;
|
||||
align-items: stretch;
|
||||
}
|
||||
|
||||
/* 产品卡片样式 */
|
||||
.product-card2 {
|
||||
box-sizing: border-box;
|
||||
background: rgb(242, 243, 245);
|
||||
border-radius: 8px;
|
||||
cursor: pointer;
|
||||
flex: 1 1 50%;
|
||||
/* 一行2个 */
|
||||
min-width: 180px;
|
||||
/* 保证图片显示 */
|
||||
/* max-width: calc(50% - 10px); */
|
||||
/* 适配gap */
|
||||
height: 240px;
|
||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
|
||||
display: flex;
|
||||
text-decoration: none;
|
||||
transition: transform 0.3s ease, box-shadow 0.3s ease;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* 核心修改:文字区域相对于父盒子居中,内部内容左对齐 */
|
||||
.product-text2 {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
/* 文字区域整体水平居中(相对于product-card1) */
|
||||
justify-content: center;
|
||||
/* 文字区域整体垂直居中(相对于product-card1) */
|
||||
text-align: left;
|
||||
/* 内部文字左对齐 */
|
||||
min-width: 70px;
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* 内部内容容器:统一承载标题、描述、链接,确保左对齐一致性 */
|
||||
.product-text-content2 {
|
||||
width: 100%;
|
||||
/* 继承product-text的宽度,确保左对齐范围完整 */
|
||||
max-width: 280px;
|
||||
/* 新增:限制最大宽度,避免PC端父容器过宽时内容排版松散 */
|
||||
}
|
||||
|
||||
/* 标题:超出一行显示省略号(左对齐) */
|
||||
.product-card-title2 {
|
||||
font-size: clamp(16px, 2vw, 19px);
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
margin-bottom: 5px;
|
||||
letter-spacing: 0.2px;
|
||||
/* 超出一行省略号核心样式 */
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
width: 100%;
|
||||
/* 基于内部容器左对齐,省略号生效 */
|
||||
}
|
||||
|
||||
/* 描述:超出2行显示省略号(左对齐) */
|
||||
.product-card-desc2 {
|
||||
font-size: clamp(12px, 1.8vw, 14px);
|
||||
color: #656565;
|
||||
margin-bottom: 15px;
|
||||
letter-spacing: 0.1px;
|
||||
/* 超出2行显示省略号核心样式 */
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
white-space: normal;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
width: 100%;
|
||||
/* 基于内部容器左对齐 */
|
||||
line-height: 1.4;
|
||||
/* 优化行高,2行高度适中 */
|
||||
}
|
||||
|
||||
/* 图片容器:确保移动端显示 */
|
||||
.product-card-img2 {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
min-width: 70px;
|
||||
/* 强制保留图片区域,避免被挤压 */
|
||||
}
|
||||
|
||||
.product-card-img2 img {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
max-height: 144px;
|
||||
min-height: 80px;
|
||||
object-fit: contain;
|
||||
/* 保持图片比例完整,不拉伸 */
|
||||
}
|
||||
|
||||
/* 链接图标:左对齐(基于内部容器) */
|
||||
.product-card-link2 {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
/* 图标左对齐 */
|
||||
}
|
||||
|
||||
.product-card-link2 img {
|
||||
width: clamp(60px, 4vw, 76px);
|
||||
margin: 0;
|
||||
/* 清除居中margin */
|
||||
}
|
||||
|
||||
/* hover效果 */
|
||||
.product-card2:hover {
|
||||
transform: scale(1.03);
|
||||
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.12);
|
||||
}
|
||||
|
||||
/* 媒体查询:平板端(768px ~ 1023px) */
|
||||
@media (max-width: 1023px) and (min-width: 768px) {
|
||||
.product-card2 {
|
||||
height: 224px;
|
||||
min-width: 170px;
|
||||
}
|
||||
.product-text2 {
|
||||
padding-left: 20px;
|
||||
}
|
||||
.product-card-img2 img {
|
||||
max-height: 128px;
|
||||
}
|
||||
}
|
||||
|
||||
/* 媒体查询:移动端(≤767px) */
|
||||
@media (max-width: 767px) {
|
||||
.product-card-box2 {
|
||||
margin-top: 19px;
|
||||
}
|
||||
|
||||
.product-card2 {
|
||||
padding: 0 8px;
|
||||
}
|
||||
|
||||
.product-card-container2 {
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.product-card2 {
|
||||
height: 208px;
|
||||
min-width: 160px;
|
||||
}
|
||||
|
||||
.product-card-img2 img {
|
||||
max-height: 120px;
|
||||
min-height: 72px;
|
||||
}
|
||||
}
|
||||
|
||||
/* 媒体查询:小屏手机(≤375px) */
|
||||
@media (max-width: 375px) {
|
||||
.product-card2 {
|
||||
height: 192px;
|
||||
min-width: 140px;
|
||||
}
|
||||
|
||||
/* 强制文字最小12px,保证可读性 */
|
||||
.product-card-title2,
|
||||
.product-card-desc2 {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.product-card-img2 img {
|
||||
max-height: 104px;
|
||||
min-height: 64px;
|
||||
}
|
||||
|
||||
.product-card2 {
|
||||
padding: 0 5px;
|
||||
}
|
||||
|
||||
.product-card-link2 img {
|
||||
width: 40px;
|
||||
/* 固定图标尺寸,节省空间 */
|
||||
}
|
||||
}
|
||||
|
||||
/* 媒体查询:超小屏手机(≤320px) */
|
||||
@media (max-width: 320px) {
|
||||
.product-card2 {
|
||||
min-width: 120px;
|
||||
}
|
||||
|
||||
.product-text2 {
|
||||
padding: 0 5px;
|
||||
}
|
||||
|
||||
.product-card-img2 {
|
||||
min-width: 60px;
|
||||
/* 缩小图片区域最小宽度,平衡文字空间 */
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,124 @@
|
||||
/* 设计稿750px → 1rem=100px,所有尺寸按设计稿÷100换算 */
|
||||
/* 容器布局:通用基础样式 */
|
||||
.product-card-box {
|
||||
width: 93.5%;
|
||||
margin: 0.12rem auto 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.product-card-container {
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
overflow: visible !important;
|
||||
height: auto !important;
|
||||
gap: 0.12rem; /* 间距调整为0.12rem */
|
||||
justify-content: space-between; /* 两端对齐,确保铺满 */
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
/* 卡片包裹容器:强制一行2个并铺满 */
|
||||
.product-card-wrap {
|
||||
display: block !important;
|
||||
width: calc(50% - 0.06rem) !important; /* 50%宽度 - 间距的一半(0.12rem/2=0.06rem) */
|
||||
height: auto !important;
|
||||
margin: 0 !important; /* 移除额外margin */
|
||||
}
|
||||
|
||||
/* 卡片核心:通用样式 */
|
||||
.product-card {
|
||||
background: rgb(242, 243, 245);
|
||||
cursor: pointer;
|
||||
width: 100% !important;
|
||||
flex: none;
|
||||
box-shadow: 0 0.1125rem 0.4rem rgba(0, 0, 0, 0.05);
|
||||
margin: 0 !important;
|
||||
box-shadow: 0 0.05rem 0.15rem rgba(0, 0, 0, 0.08); /* 包裹容器阴影 */
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: auto !important;
|
||||
transition: transform 0.3s ease;
|
||||
border-radius: 0.07rem;
|
||||
}
|
||||
|
||||
/* 卡片hover效果:通用 */
|
||||
.product-card:hover {
|
||||
transform: scale(1.02);
|
||||
}
|
||||
|
||||
/* 图片容器:通用样式 */
|
||||
.product-card-img {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
flex: 0 0 auto;
|
||||
aspect-ratio: 3 / 2.8;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* 产品图片:通用样式 */
|
||||
.product-card img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: contain;
|
||||
object-position: center;
|
||||
}
|
||||
|
||||
/* 文字容器:通用样式(居中对齐) */
|
||||
.product-card-text {
|
||||
flex: 1 1 auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
|
||||
height: auto !important;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* 标题样式:通用 */
|
||||
.product-card-title {
|
||||
font-size: 0.3rem;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
height: auto !important;
|
||||
margin-bottom: 0.21rem;
|
||||
|
||||
}
|
||||
|
||||
/* 描述样式:通用(2行截断) */
|
||||
.product-card-desc {
|
||||
font-size: 0.24rem;
|
||||
color: #656565;
|
||||
word-break: break-word;
|
||||
height: auto !important;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
/* 链接图标容器:通用样式(居中) */
|
||||
.product-card-link {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex: 0 0 auto;
|
||||
padding: 0.35rem 0 0.4rem;
|
||||
height: auto !important;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* 链接图标:通用样式 */
|
||||
.product-card-link img {
|
||||
width: 1.54rem;
|
||||
height: auto;
|
||||
object-fit: contain;
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
.swiper-container {
|
||||
padding: 0 !important;
|
||||
}
|
||||
/* 轮播容器 - 核心:基于视口高度自适应 */
|
||||
.auto-swiper-container {
|
||||
width: 100%;
|
||||
/* 关键:高度 = 视口高度的百分比(可调整,如60vh=屏幕高度60%) */
|
||||
margin-bottom:1.5rem;
|
||||
/* max-height: 900px; */
|
||||
min-height: 300px;
|
||||
position: relative;
|
||||
margin-top:60px;
|
||||
|
||||
}
|
||||
/* 轮播项 - 填充容器高度 */
|
||||
.auto-swiper-slide {
|
||||
width: 100%;
|
||||
/*height: 100%;*/
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
|
||||
/* 图片自适应核心:填充屏幕比例高度,保持比例 */
|
||||
.auto-swiper-slide img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: contain; /* 替换 cover 为 contain,完整显示图片 */
|
||||
display: block;
|
||||
|
||||
}
|
||||
|
||||
/* 轮播容器保持相对定位 */
|
||||
.auto-swiper-container {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* 轮播容器保持相对定位 */
|
||||
.auto-swiper-container {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* 指示标容器:居中排列 */
|
||||
.swiper-pagination {
|
||||
position: absolute;
|
||||
bottom: 10%; /* 距离底部的距离,可调整 */
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
/* width:100%;
|
||||
display: flex; */
|
||||
/* justify-content: center; */
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
/* 激活状态:白色长条 */
|
||||
.swiper-pagination-bullet-active {
|
||||
background:#fff !important;
|
||||
}
|
||||
|
||||
/* 未激活状态:黑色透明圆点(可调整透明度) */
|
||||
.swiper-pagination-bullet {
|
||||
display: inline-block;
|
||||
width: 16px !important;
|
||||
height: 16px !important;
|
||||
border-radius: 8px;
|
||||
/*background: #555;*/
|
||||
margin: 0 5px;
|
||||
/*opacity: 0.8;*/
|
||||
border: 1px solid #fff;
|
||||
/*cursor: pointer;*/
|
||||
}
|
||||
|
||||
BIN
public/static/index/mobile/fonts/HarmonyOS_Sans_SC_Black.ttf
(Stored with Git LFS)
Normal file
BIN
public/static/index/mobile/fonts/HarmonyOS_Sans_SC_Bold.ttf
(Stored with Git LFS)
Normal file
BIN
public/static/index/mobile/fonts/HarmonyOS_Sans_SC_Light.ttf
(Stored with Git LFS)
Normal file
BIN
public/static/index/mobile/fonts/HarmonyOS_Sans_SC_Medium.ttf
(Stored with Git LFS)
Normal file
BIN
public/static/index/mobile/fonts/HarmonyOS_Sans_SC_Regular.ttf
(Stored with Git LFS)
Normal file
BIN
public/static/index/mobile/fonts/HarmonyOS_Sans_SC_Thin.ttf
(Stored with Git LFS)
Normal file
BIN
public/static/index/mobile/fonts/Metropolis-Black.otf
(Stored with Git LFS)
Normal file
BIN
public/static/index/mobile/fonts/Metropolis-BlackItalic.otf
(Stored with Git LFS)
Normal file
BIN
public/static/index/mobile/fonts/Metropolis-Bold.otf
(Stored with Git LFS)
Normal file
BIN
public/static/index/mobile/fonts/Metropolis-BoldItalic.otf
(Stored with Git LFS)
Normal file
BIN
public/static/index/mobile/fonts/Metropolis-ExtraBold.otf
(Stored with Git LFS)
Normal file
BIN
public/static/index/mobile/fonts/Metropolis-ExtraBoldItalic.otf
(Stored with Git LFS)
Normal file
BIN
public/static/index/mobile/fonts/Metropolis-ExtraLight.otf
(Stored with Git LFS)
Normal file
BIN
public/static/index/mobile/fonts/Metropolis-ExtraLightItalic.otf
(Stored with Git LFS)
Normal file
BIN
public/static/index/mobile/fonts/Metropolis-Light.otf
(Stored with Git LFS)
Normal file
BIN
public/static/index/mobile/fonts/Metropolis-LightItalic.otf
(Stored with Git LFS)
Normal file
BIN
public/static/index/mobile/fonts/Metropolis-Medium.otf
(Stored with Git LFS)
Normal file
BIN
public/static/index/mobile/fonts/Metropolis-MediumItalic.otf
(Stored with Git LFS)
Normal file
BIN
public/static/index/mobile/fonts/Metropolis-Regular.otf
(Stored with Git LFS)
Normal file
BIN
public/static/index/mobile/fonts/Metropolis-RegularItalic.otf
(Stored with Git LFS)
Normal file
BIN
public/static/index/mobile/fonts/Metropolis-SemiBold.otf
(Stored with Git LFS)
Normal file
BIN
public/static/index/mobile/fonts/Metropolis-SemiBoldItalic.otf
(Stored with Git LFS)
Normal file
BIN
public/static/index/mobile/fonts/Metropolis-Thin.otf
(Stored with Git LFS)
Normal file
BIN
public/static/index/mobile/fonts/Metropolis-ThinItalic.otf
(Stored with Git LFS)
Normal file
BIN
public/static/index/mobile/fonts/icomoon/colleciton/icomoon.svg
(Stored with Git LFS)
|
Before Width: | Height: | Size: 129 B After Width: | Height: | Size: 2.3 KiB |
BIN
public/static/index/mobile/fonts/icomoon/icomoon.svg
(Stored with Git LFS)
|
Before Width: | Height: | Size: 129 B After Width: | Height: | Size: 7.9 KiB |
BIN
public/static/index/mobile/images/jiant.png
Normal file
|
After Width: | Height: | Size: 696 B |
BIN
public/static/index/mobile/images/ljgd.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
public/static/index/mobile/images/topic_laptop/zoom-img-1.png
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
@@ -66,7 +66,7 @@
|
||||
.orico_Page_productxc .productxcMain .culture_top .culture_bril_con .culture_bril_div .title {
|
||||
font-size: 1.125rem;
|
||||
font-weight: 600;
|
||||
font-family: Montserrat-Bold, Montserrat;
|
||||
font-family: HarmonyOS-Bold, HarmonyOS;
|
||||
margin-top: 2rem;
|
||||
width: 90%;
|
||||
margin-left: 5%;
|
||||
@@ -75,7 +75,7 @@
|
||||
width: 80%;
|
||||
font-size: 0.875rem;
|
||||
color: #707070;
|
||||
font-family: Montserrat-Medium, Montserrat;
|
||||
font-family: HarmonyOS-Medium, HarmonyOS;
|
||||
margin-top: 1.375rem;
|
||||
margin-left: 10%;
|
||||
}
|
||||
@@ -93,7 +93,7 @@
|
||||
line-height: 2em;
|
||||
margin-bottom: 2%;
|
||||
font-weight: 600;
|
||||
font-family: Montserrat-Bold, Montserrat;
|
||||
font-family: HarmonyOS-Bold, HarmonyOS;
|
||||
}
|
||||
.orico_Page_productxc .productxcMain .culture_vision .swt-Container {
|
||||
width: 80%;
|
||||
@@ -138,14 +138,14 @@
|
||||
color: #101010;
|
||||
line-height: 2em;
|
||||
margin-bottom: 2%;
|
||||
font-family: Montserrat-Bold, Montserrat;
|
||||
font-family: HarmonyOS-Bold, HarmonyOS;
|
||||
margin-right: 10%;
|
||||
}
|
||||
.orico_Page_productxc .productxcMain .culture_vision .swt-Container .swt-Table .Table-Row .right .des {
|
||||
font-size: 16px;
|
||||
color: #737373;
|
||||
line-height: 1.6rem;
|
||||
font-family: Montserrat-Medium, Montserrat;
|
||||
font-family: HarmonyOS-Medium, HarmonyOS;
|
||||
}
|
||||
.orico_Page_productxc .productxcMain .culture_vision .swt-Container .swt-Table .Table-Row .Table-Cell {
|
||||
display: table-cell;
|
||||
@@ -159,7 +159,7 @@
|
||||
font-size: 1rem;
|
||||
color: #737373;
|
||||
line-height: 1.6rem;
|
||||
font-family: Montserrat-Medium, Montserrat;
|
||||
font-family: HarmonyOS-Medium, HarmonyOS;
|
||||
}
|
||||
.orico_Page_productxc .productxcMain .culture_vision .swt-Container .culture_vision_02 .des,
|
||||
.orico_Page_productxc .productxcMain .culture_vision .swt-Container .culture_vision_02 .subtitle {
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
}
|
||||
.orico_Page_introduction .introductionMain .iotbpage .iotb_bgw .iotbt1 {
|
||||
font-size: 32px;
|
||||
font-family: Montserrat-Bold, Montserrat;
|
||||
font-family: HarmonyOS-Bold, HarmonyOS;
|
||||
padding-bottom: 65px;
|
||||
padding-top: 88px;
|
||||
font-weight: 700;
|
||||
@@ -57,14 +57,14 @@
|
||||
}
|
||||
.orico_Page_introduction .introductionMain .iotbpage .iotb_bgw .iotb_part1 .iotb_p1_item .iotbtp1 {
|
||||
font-size: 18px;
|
||||
font-family: Montserrat-Bold, Montserrat;
|
||||
font-family: HarmonyOS-Bold, HarmonyOS;
|
||||
font-weight: bold;
|
||||
padding-bottom: 18px;
|
||||
}
|
||||
.orico_Page_introduction .introductionMain .iotbpage .iotb_bgw .iotb_part1 .iotb_p1_item .iotbts1 {
|
||||
text-align: center;
|
||||
font-size: 16px;
|
||||
font-family: Montserrat-Medium, Montserrat;
|
||||
font-family: HarmonyOS-Medium, HarmonyOS;
|
||||
color: #9e9e9f;
|
||||
}
|
||||
.orico_Page_introduction .introductionMain .iotb_part2 {
|
||||
@@ -78,7 +78,7 @@
|
||||
}
|
||||
.orico_Page_introduction .introductionMain .iotb_part2 .iotbt1 {
|
||||
font-size: 32px;
|
||||
font-family: Montserrat-Bold, Montserrat;
|
||||
font-family: HarmonyOS-Bold, HarmonyOS;
|
||||
padding-bottom: 65px;
|
||||
padding-top: 88px;
|
||||
font-weight: 700;
|
||||
|
||||