我在scss
文件中为div设置了背景图片:
#header {
background-image: url('/assets/images/background/bg1.jpg')!important;
background-size: cover;
background-position: center center;
background-repeat: no-repeat;
height: 100px;
}
assets
目录位于src
下pages
旁边。
使用ionic serve
和ionic cordova run android -lc
时会显示图片。但是,当使用ionic cordova run android
在设备上运行应用时,图像不会显示。我已经阅读了几乎所有关于这个问题的类似问题,所有这些问题都指出应该避免相对地址,路径应该以{{1}}开头。我测试了我的路径以assets
开头并且它没有显示任何内容(即使使用assets
,因为它尝试从ionic serve
加载图像)。但是,使用http://localhost:8100/build/assets/images/background/bg1.jpg
启动路径可以正常运行,并从/assets
加载图像。
我该如何解决这个问题?不使用http://localhost:8100/assets/images/background/bg1.jpg
时如何使图像显示在设备上?
P.S。这是-lc
下的目录结构:
src
我的├───app
├───assets
│ ├───fonts
│ │ └───custom
│ ├───i18n
│ ├───icon
│ └───images
│ ├───background
│ └───markers
├───components
│ └───progress-bar
├───models
├───pages
│ ├───friends
│ ├───home
│ ├───login
│ ├───map
│ ├───tabs
│ └───items
├───providers
│ ├───alert
│ ├───map
│ └───message
└───theme
文件位于scss
目录下。另外的测试给出了以下结果,表明图像显示在哪些条件下:
pages/items
嗯,正如您所看到的,+------------------+-------------+-----------------+-------------+
| Path starts with | ionic serve | run android -lc | run android |
+------------------+-------------+-----------------+-------------+
| assets | No | No | No |
| /assets | Yes | Yes | No |
| ./assets | No | No | No |
| ../assets | Yes | Yes | Yes |
| ../../assets | Yes | Yes | No |
+------------------+-------------+-----------------+-------------+
会在所有条件下显示,这违背了我的期望!有人知道原因吗?
更新:
我提取了生成的../assets/images/background/bg1.jpg
文件,这里显示的是目录树:
apk
所有├───assets
│ ├───fonts
│ │ └───custom
│ ├───i18n
│ ├───icon
│ └───images
│ ├───background
│ └───markers
├───build
├───cordova-js-src
│ ├───android
│ └───plugin
│ └───android
└───plugins
├───cordova-plugin-camera
│ └───www
├───cordova-plugin-device
│ └───www
├───cordova-plugin-file
│ └───www
│ └───android
├───cordova-plugin-file-transfer
│ └───www
├───cordova-plugin-geolocation
│ └───www
│ └───android
├───cordova-plugin-googlemaps
│ └───www
├───cordova-plugin-splashscreen
│ └───www
├───cordova-plugin-statusbar
│ └───www
└───ionic-plugin-keyboard
└───www
└───android
个文件已合并到一个名为scss
的文件中,该文件位于main.css
目录下,还有许多其他build
个文件。从树中可以看出,js
位于assets
目录旁边。因此,为了从build
文件中获取背景图像,很明显我们应该采用这条路径:main.css
,这就是为什么表中第4条记录的所有都是../assets/images/background/bg1.jpg
的原因。现在的问题是为什么每个人都建议不要使用相对路径并坚持使用绝对路径?绝对的道路不会这样工作!
答案 0 :(得分:1)
您可以打开apk文件并确定图像的正确路径。您可以通过文件存档打开apk。 我建议也使用浏览器Chrome的“远程设备”。它将节省您的大量时间。祝你好运))
答案 1 :(得分:0)
您需要设置路径,如下所示。 即使用./assets/
background-image: url('./assets/images/background/bg1.jpg')!important;
答案 2 :(得分:0)
更新最新答案:
图像文件包含以下位置:
src => assets => images => background => bg1.jpg
scss文件包含以下位置:
scr => pages => items => items.scss
例如在items文件夹
中1. items.html
2. items.scss
3. items.ts
我的例子是:
<强> items.html 强>
<div id="header"></div>
<强> items.scss 强>
问题是:更改网址路径 background-image:url(&#39; ../../ assets / images / background / bg1.jpg&#39;); 而不是背景-image:url(&#39; /assets/images/background/bg1.jpg')!important;
#header {
background-image: url('../../assets/images/background/1.png');
background-size: cover;
background-position: center center;
background-repeat: no-repeat;
height: 100px;
}
答案 3 :(得分:0)
我用
background-image: url('../assets/images/background/image_name.png');
而不是
background-image: url('../../assets/images/background/1.png');
它对我有用,希望它对你也有用。