UIWebview 或 WKWebview 加载不了本地的css?

最近朋友问起我,说近来遇到个问题把css 写本地时,加载的时侯不生效,图片文字控制不了。

因此我让他发个样子来看,https://segmentfault.com/q/1010000005179822

我详细看了下他的写码,不能加载成功的一个原因就是对html使用css的语法不熟释。

w3c 中http://www.w3school.com.cn/html/html_css.asp写得很清楚怎么用css.

<head>
<link rel="stylesheet" type="text/css" href="mystyle.css">
</head>

外链时: href 可以是本地的css文件件路径。可以是http的网络路径。

<head>

<style type="text/css">
body {background-color: red}
p {margin-left: 20px}
</style>
</head>
而本地作为string串样式时只需要设置为内连就可以了。

总结 2 种方式加载css

1. 以文件的方式,即把css脚本存为html.css 名称按自己的喜好设置就好了。

   加载如下

      NSString *htmlcontentstring = @"xxxx";//这里是纯html内容没有加任何css的样式。

      //先从沙盒中读出css文件。

    NSString *path = [[NSBundle mainBundle]pathForResource:@"html" ofType:@".css"];

    

    NSString *localcss = [NSString stringWithFormat:@"<head><link rel=\"stylesheet\" type=\"text/css\" href=\"%@\"></head>",path];

     可以看到的是拼接了一个相对css文件的路径。

    

    NSString * htmlcontent = [NSString stringWithFormat:@"%@%@",localcss, htmlcontentstring]; //拼接css

    

    [self.webView loadHTMLString:htmlcontent baseURL:[NSURL fileURLWithPath:path]]; //baseURL指定到css的路径.

2. 直接把css脚本串加到webview,有时候我们可以通过配置接口一次把css脚本拿回来存本地。

   这里注意的其实就是使用外连加载CSS还是内置,因为是脚本串,所以我们这里用的是内连的方式

   NSString *htmlcontentstring = @"xxxx";//这里是纯html内容没有加任何css的样式。

   NSString *cssScript = @"yyxx..xxx"; //这里是一连串css的脚本。

  然后拼内连的样式。

  

htmlcontentstring = [NSString stringWithFormat:@"<head><style type=\"text/css\"> %@ </style></head>%@",cssScript,htmlcontentstring];

[self.webView loadHTMLString:htmlcontentstring baseURL:nil];


出来的关键就是没有处理内连css还是外连css的样式,再有一个就是外连时的路径是否正确,只要保证这两点,css样式没问题的。






猜你喜欢

转载自blog.csdn.net/fengsh998/article/details/79882487