Как сделать часть веб-представления слегка прозрачной?

В Objective-C с Mac OSX Cocoa, есть ли способ сделать a DIV на WebView немного полупрозрачным, чтобы десктопные приложения за окном слегка просачивались, но только на этом DIV а не остальные WebView?

Или, может быть, я могу сделать весь WebView полупрозрачным, но отключить его для всех DIV, кроме одного DIV?

У меня есть WebView загрузка веб-страницы. На веб-странице у меня есть боковая панель слева, а затем IFRAME справа. Я нажимаю элементы на боковой панели, и они меняют страницы IFRAME справа. Это эта боковая панель, которую я хочу сделать полупрозрачной.

В моем AppDelegate.m у меня есть это до сих пор, а теги HTML и BODY установлены на background:none, а на моей боковой панели установлено значение background:rgba(0,0,0,0.5), но все, что я вижу, это серый боковой фон. Он, как и сам веб-просмотр, хочет убедиться, что на его фоне установлен цвет, отличный от прозрачного.

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
  // note that _window and _wv are outlet properties to my window and webview widgets
  [_window setBackgroundColor:[NSColor clearColor]];
  [_window setOpaque:NO];

  [_wv.layer setBackgroundColor:[NSColor clearColor].CGColor];
  [_wv.layer setOpaque:NO];
}

Ответ 1

Да, просто установите свойство drawsBackground вашего экземпляра WebView на NO, затем обязательно заполните части страницу, которую вы хотите непрозрачно с помощью CSS.

Ответ 2

Связанный шаг за шагом Учебник с примерами:

http://stylekit.org/blog/2016/01/23/Chromeless-window/

Настройка прозрачности:

  • Установите для параметра styleMask подкласса NSWindow значение NSFullSizeContentViewWindowMask (чтобы полупрозрачность также была видна в области заголовка, оставьте это, а область заголовка будет пустым)
  • Установите self.titlebarAppearsTransparent = true (скрывает графику заголовка по умолчанию)
  • Добавьте ниже код в подкласс NSWindow: (теперь вы должны иметь полупрозрачное окно)

.

let visualEffectView = NSVisualEffectView(frame: NSMakeRect(0, 0, 0, 0))//<---the width and height is set to 0, as this doesn't matter. 
visualEffectView.material = NSVisualEffectMaterial.AppearanceBased//Dark,MediumLight,PopOver,UltraDark,AppearanceBased,Titlebar,Menu
visualEffectView.blendingMode = NSVisualEffectBlendingMode.BehindWindow//I think if you set this to WithinWindow you get the effect safari has in its TitleBar. It should have an Opaque background behind it or else it will not work well
visualEffectView.state = NSVisualEffectState.Active//FollowsWindowActiveState,Inactive
self.contentView = visualEffectView/*you can also add the visualEffectView to the contentview, just add some width and height to the visualEffectView, you also need to flip the view if you like to work from TopLeft, do this through subclassing*/

введите описание изображения здесь

введите описание изображения здесь